Elasticsearch多匹配查询和匹配单个字段

时间:2015-04-18 01:31:14

标签: elasticsearch

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

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

我的代码

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

1 个答案:

答案 0 :(得分:0)

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

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

,而不是进行多重搜索