【问题标题】:Filter context for should query in elasricsearch?在弹性搜索中过滤应该查询的上下文?
【发布时间】:2017-10-12 16:07:02
【问题描述】:

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

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

我怎样才能使它成为“或”,即所有匹配“word1”、“word2”或两者的文档,因为上面的代码给我的结果是包含“word1”和“word2”的文档。

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

谢谢

【问题讨论】:

  • 只需将must 替换为should,您就会得到您所期望的。

标签: python elasticsearch elasticsearch-5


【解决方案1】:

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

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

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

【讨论】:

  • 并设置minmum_should_match: 1 至少在一种情况下匹配。
  • 如果没有mustfilter条件则不需要
猜你喜欢
  • 2015-01-25
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
相关资源
最近更新 更多