在elasricsearch中查询应该查询?

时间:2017-05-13 12:04:36

标签: python elasticsearch elasticsearch-5

我有一个必须查询,如下所示:

{
    "query": {
        "bool": {
            "must": [{
                "match": {
                    "section": {
                        "query": "word1",
                        "boost": "3"
                    }
                }
            }, {
                "match": {
                    "section": {
                        "query": "word2",
                        "boost": "4"
                    }
                }
            }]
        }
    }
}

如何使其成为“或”即所有与“word1”,“word2”或两者相匹配的文档,因为上面的代码会给出包含“word1”和“word2”的文档的结果。

我在documentation中读到这可以通过在过滤器上下文中使用should来实现,但我找不到任何示例。

由于

1 个答案:

答案 0 :(得分:0)

您应该使用should块而不是must。这是一个正确的查询

{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "section": {
                            "query": "word1",
                            "boost": "3"
                        }
                    }
                },
                {
                    "match": {
                        "section": {
                            "query": "word2",
                            "boost": "4"
                        }
                    }
                }
            ]
        }
    }
}

对于filter阻止,它会返回与must相同的文档但不会影响最终得分