首页 > 解决方案 > Elasticsearch:多个关键字不搜索所有字段

问题描述

我是 elasticsearch 新手,在使用多个关键字搜索所有字段时遇到问题。例如,如果我在所有字段中搜索该术语:foo我会返回所有结果。

但是,如果我搜索所有字段,foo bar那么当我知道 foo 和 bar 在 1 个字段中且 bar 在另一个字段中时,它只会返回一个字段中包含 foo 和 bar 的结果。

如果我搜索所有字段,foo "bar"它将正常工作并返回所有字段的所有结果,但真的不想尝试向用户解释第二个术语的用户报价。

知道我哪里出错了吗?

询问:

{
  "query": {
   "bool": {
    "must": {
     "query_string": {
      "fields": ["heading, title, content, call_number"],
      "query": "foo bar",
      "default_operator": "AND"
    }
   }
  }
 }
}

标签: elasticsearch

解决方案


您正在寻找的是combined_fields搜索查询

combine_fields 查询支持搜索多个文本字段,就好像它们的内容已被索引到一个组合字段中一样。阅读更多

{
  "query": {
    "combined_fields": {
      "query": "foo bar",
      "fields": [
        "heading",
        "title",
        "content",
        "call_number"
      ],
      "operator": "and"
    }
  }
}

推荐阅读