如何在ElasticSearch中查询确切且只有一个属性?

时间:2019-05-24 12:26:27

标签: elasticsearch

我有一个具有以下映射的文档:

"employees": {
   "type": "dynamic",
   "properties": { 
      "prop1":  { ""type": "text" },
      "prop2": { "type": "text"  }
   }
}

我想查询所有具有prop1的文档,仅此而已,我不想获取同时具有prop1和prop2的文档。如果我对prop1使用术语查询,我还将获得可能包含prop2的文档。

3 个答案:

答案 0 :(得分:1)

这应该有效:

GET employees/_search
{
    "query": {
        "bool": {
            "must": [{
                "exists": {
                    "field": "prop1"
                }
            }],
            "must_not": [{
                "exists": {
                    "field": "prop2"
                }
            }]
        }
    }
}

这就是说prop1 必须存在而prop2 必须不存在,因此您将不会获得同时具有prop1和prop2的文档。

答案 1 :(得分:0)

同时,我了解到,这样做的一个好方法是跟踪设置了哪些属性。因此,您可以查询属性计数和所需的属性。

答案 2 :(得分:-1)

GET /_search
{
    "query": {
        "exists": {
            "field": "prop1"
        }
    }
}

存在查询可以返回所有具有必填字段的文档

link to elastic documentation