【问题标题】:Elasticsearch Multi-match query and matching a single fieldElasticsearch 多匹配查询和匹配单个字段
【发布时间】:2015-04-18 11:21:14
【问题描述】:

如何对单个索引类型执行多重匹配查询,匹配所有字段同时匹配单个字段。

假设我有一个书籍索引类型,我想在其所有与流派字段匹配的字段上执行搜索。例如在“自传”类型中搜索..

我的代码

{
   "query": {
      "filtered": {
         "query": {
            "match": {
               "genre": "autobiography"
            },
            "multi_match" : {
                "query": "Johnny Appleseed",
                "fields": ["author", "publication_date", "isbn", "genre"]
            }
         },
         "filter": {
            "type": {
               "value": "books"
            }
         }
      }
   }
}

【问题讨论】:

  • "匹配单个字段的同时匹配所有字段"???
  • 您应该在发布问题时付出一些额外的努力:与任何问题一样,它应该是可重现的......所以请向我们展示映射,以及一些文档示例,想要的输出,实际输出等等

标签: elasticsearch


【解决方案1】:

_all 是解决这个问题的正确选择。 链接 - http://www.elastic.co/guide/en/elasticsearch//reference/current/mapping-all-field.html

默认 _all 是一个附加字段,其中包含来自所有字段的所有标记。这使其成为文档级非结构化搜索的理想选择。 现在,由于 _all 适用于所有字段,因此对我们来说可能不是那么通用。 在这种情况下,您可以在映射中为您不希望出现在 _all 中的字段将 include_in_all 设置为 false。 因此,您可以只搜索_all,而不是进行多重搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多