如何在elasticsearch中使用OR运算添加多个存在字段

时间:2017-08-23 12:04:16

标签: elasticsearch

我有以下查询:

{
  "query": {
    "exists": {
      "field": "field1"
    }
  }
}

我希望我的查询能够以一种方式进行修改,我可以添加另一个过滤器,其中现有字段之间有“OR”操作。

知道怎么做吗?

感谢。

2 个答案:

答案 0 :(得分:14)

您可以将Bool Queryshould一起使用。

{
    "query": {
        "bool": {
            "should": [{
                "exists": {
                    "field": "field1"
                }
            },
            {
                "exists": {
                    "field": "field2"
                }
            }
            ]
        }
    }
}

答案 1 :(得分:0)

如果结果文档中存在 should,则使用 field1 OR field2 布尔查询。

示例:

POST your_index/_doc/_search
{
    "query": {
        "bool": {
            "should": [{
                "exists": {
                    "field": "field1"
                }
            },
            {
                "exists": {
                    "field": "field2"
                }
            }
            ]
        }
    }
}

如果输出文档中存在 must field1 AND field2,则使用 must 布尔查询。

示例:

POST your_index/_doc/_search
{
    "query": {
        "bool": {
            "must": [{
                "exists": {
                    "field": "field1"
                }
            },
            {
                "exists": {
                    "field": "field2"
                }
            }
            ]
        }
    }
}