当前位置: 首页 > 知识库问答 >
问题:

如何从ElasticSearch中的“bool”查询中生成逻辑的“或”?

寇宏义
2023-03-14

在Elasticsearch文档中,它说“or查询”是不推荐的,而是使用“bool”查询:https://www.elastic.co/guide/en/Elasticsearch/reference/current/query-dsl-or-query.html

但是我不确定如何使用“bool”查询来生成一个逻辑的“或”。我试过:

query: {
    bool: {
        must: [
            { match: { title: 'some title'}},
            { match: { author: 'some author'}}
        ]
    }
}

这与标题为“some title”和作者为“some author”相匹配,但如何将其转换为OR表达式?就像我希望它匹配的标题是“某个标题”或作者是“某个作者”。谢了!

共有1个答案

宰父远
2023-03-14

只需将your must替换为should并添加运算符:

query: {
    bool: {
        should: [
            { match: { title: {query:'some title', operator: 'AND'}},
            { match: { author: {query: 'some author', operator: 'AND'}}
        ]
    }
}
 类似资料:
  • 这是一个关于2个查询的故事。一个返回结果,而另一个不返回结果。为什么? 返回结果的查询:

  • 还有 我可以使用多个过滤器在一个必须像下面的代码:

  • 很抱歉提出这个问题,但ElasticSearch查询可能会令人困惑。。。 目标:创建一个类似谷歌搜索查询的查询。输入的单词越多,得到的匹配结果越少。例如“四川酱”比“木兰四川酱”产生更多的结果。我的索引有一个博客文章类型,它有字段“标题”、“标签”、“类别”。ElasticSearch必须找到与查询中的所有单词相匹配的每个文档。文字可以遍布各个领域。例如,如果一个文档的标题包含“木兰”,它的标签包

  • 我正在构建一个搜索查询,它将一组约束()动态地添加到查询中。一般预期结构如下 换句话说,我有一组(一个或多个)必须全部满足的条件(上面的)。可能有几个这样的集合,其中任何一个都足以进行最后的匹配(上面的)。 这种结构的一个示例,由我的代码生成(这是完整的API查询,生成的部分是): 我对这个查询的理解是: 如果和 或 如果 条目将匹配 不幸的是,我把Elasticsearch称为错误 这个错误是什

  • 我目前正在尝试将一个基于Solr的应用程序迁移到ElasticSearch。 我有这个lucene查询 根据我的理解,这是一个必须子句与布尔OR结合的组合: “获取名称中包含(foo和bar)或信息中包含(foo和bar)的所有文档。之后,根据条件筛选结果state=1,并增强具有图像的文档。” 我一直试图在MUST中使用bool查询,但未能将boolean或转换为MUST子句。以下是我的资料:

  • 查询返回此错误。 Elasticsearch\Common\Exceptions\BadRequest est400Exception:{"error":{"root_cause":[{"type":"parsing_exception","原因":"未知查询[查询]","line": 1,"coll": 62}],"type":"x_content_parse_exception","原因":"