【问题标题】:Elasticsearch get documents where a property is not emptyElasticsearch 获取属性不为空的文档
【发布时间】:2019-02-19 08:47:44
【问题描述】:

如果我想返回所有具有空属性 (IMG) 的文档,我可以这样做:

GET something/_search/?
{
  "query": {
    "term": {"IMG": ""}
  }
}

之所以有效,是因为IMG 是一个关键字。如果我想要 exact inverse,这意味着获取所有IMG 不为空的文档,我应该输入什么? term 查询是否存在“逆”?

换句话说,Elasticsearch 有没有办法获取属性不为空的文档

【问题讨论】:

  • 这个答案应该会有所帮助:stackoverflow.com/questions/32949321/…
  • 感谢您的评论。它并没有真正的帮助,因为这些答案检查的是存在,而不是emptiness
  • 对不起,你的意思是“属性不是空字符串”?
  • @Val 是的。顺便说一句,我刚刚找到了一个解决方案并在下面发布了一个答案。随意评论、编辑或发布您自己的答案!
  • 我也发过一个 ;-)

标签: elasticsearch kibana


【解决方案1】:

您上面的解决方案还将返回字段为空的文档,我猜您不希望这样做。所以正确的解决方案是这个:

GET memoire/_search/?
{
  "query": {
    "bool": {
      "filter": {
        "exists": {
          "field": "test"
        }
      },
      "must_not": {
        "term": {
          "test.keyword": ""
        }
      }
    }
  }
}

【讨论】:

    【解决方案2】:

    这里有一个解决方案。使用 must_notterm 查询。这应该有效:

    GET memoire/_search/?
    {
      "query": {
        "bool": {
          "must_not": {
            "term": {"IMG.keyword": ""}
          }
        }
      }
    }
    

    【讨论】:

    • 你有 must 而不是 must_not
    • @Val 哎呀! +1 谢谢! (我只是在 kibana 中检查 must_not 然后必须确定,我发布了错误的!)。已编辑,已修复!
    • 查看我的解决方案以确保您不会返回带有IMG: null 的文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2021-11-12
    • 2021-09-29
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多