Elasticsearch 获取 属性 不为空的文档

Elasticsearch get documents where a property is not empty

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

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

之所以有效,是因为 IMG 是关键字。如果我想要 exact inverse,这意味着获取所有 IMG 不为 null 的文档,我应该输入什么?是否有 "inverse" of term 查询?

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

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

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

你上面的解决方案也会 return 记录字段为空的地方,我猜你不希望这样。所以正确的解决方案是这个:

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