OR和And没有按预期弹性工作

时间:2016-11-25 13:29:47

标签: php elasticsearch

我使用的是弹性2.4,我写了下面的查询:

    "query": {
        "bool": {
            "should": [{
                "prefix": {
                    "firstname": "guneet"
                }
            }, {
                "prefix": {
                    "lastname": "guneet"
                }
            }],
            "must": [{
                "terms": {
                    "activities.id": ["1"]
                }
            }]
        }
    }

哪个没有按预期返回结果。它应该给我结果,其中activities.id匹配 AND 名字或姓氏匹配。但它返回的结果是activities.id是匹配的并且忽略条件,即它返回的所有记录,其中activities.id匹配而不管名字或姓氏。

我参考了combining filters

我的查询MySql版本应该是这样的: select * from users where(firstname like"%guneet%"或lastname like"%guneet%")和activities.id = [1,2]。

任何建议我如何模拟我的查询以获得类似上面的mysql查询。

提前致谢!

1 个答案:

答案 0 :(得分:0)

由于你有一个XML...子句,你需要添加一个minimum_should_match clause,它会起作用:

v_xml := XMLELEMENT("number", 123);