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

Elasticsearch bool查询必须匹配单个字段和单个术语,而另一个字段必须匹配或术语

戚祺
2023-03-14

我想要找到一个文件的名称包含'Bob',并有一个位置在'paducah'或'smyrna'。

以下是我现在所拥有的:

query: {
  bool: {
    must: [
      { match: { name: 'bob' } }, 
      { match: { location: ['paducah', 'smyrna'] } }
    ],
  },
},

我知道问题出在location数组上,因为如果我将它改为一个没有数组的元素,那么查询就可以正常工作。

这是我能找到的最接近的答案。

它没有工作,我收到以下错误:

[term]查询格式错误,应为[END_OBJECT],但找到[FIELD_NAME]

共有1个答案

韩寒
2023-03-14

您可以尝试以下查询:

{
    "query": {
      "bool": {
        "must": [
          { "match": { "name": "bob" } }
        ],
        "should": [
            { "match": { "location": "paducah" }},
            { "match": { "location": "smyrna"   }}
          ],
          "minimum_should_match": 1
      }
    }
}
 类似资料:
  • 我想构建一个ElasticSearch查询,在其中查询多个字段,但查询中的一个单词必须与其中一个字段匹配。 例如,假设我查询“Holiday party Food”,我希望它返回标题中至少有1个术语的所有文档,其余的在html_source中。 如果文档具有: 这是我到目前为止构造的,它匹配的文档包含html_source中的所有术语,而不是标题中的所有术语,这不是我想要的。

  • 尝试获取与字段ABC的值相匹配的文档。尝试了“必须”或“应该”查询,但未得到预期结果。有人能建议我应该尝试什么样的查询吗?使用HighLevelRestClient。 或 映射 条件工作正常。如果我只是反转条件并忽略字段值,那么我就会得到结果。 X1和Y1是精确的字段值(想想枚举) Still query返回所有文档。这应该已将文档筛选为匹配的值 样本文档

  • 问题内容: 我的愿望是搜索存在field_a而不存在fields_b的文档。有没有一种方法可以使用Kibana中的Lucene查询语法(Kibana的Discover部分中的Search字段)进行此操作。 我尝试使用 __missing_:field_b_ 失败( __exists_可行_ )。 我发现了这一点,但并没有太大帮助: 问题答案: 对于lucene搜索语法: 对于elasticsear

  • 问题内容: 将我的war文件部署到tomcat时出现错误: 我四处搜寻,发现log4j.xml的顺序可能是错误的,但应该是正确的。 有什么建议么? 问题答案: 根据错误消息,DTD期望所有元素都在该元素之前。您选择的方式错误。

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

  • 我们正试图在我们公司建立我们自己的表单-字段-组件。我们试图这样包装材料设计的组成部分: 字段: 文本框: 用法: 这大致会导致以下结果: 但是我在控制台中得到“mat-form-field必须包含一个MatFormFieldControl”。我想这与不直接包含matInput-field的mat-form-field有关。但它包含它,它只是在ng内容投影中。 这是一场闪电战:https://st