如何在单个索引类型上执行多匹配查询,匹配单个字段时匹配所有字段。
假设我有一个书籍索引类型,我想在所有与该类型字段匹配的字段上执行搜索。例如在“自传”类型中搜索..
我的代码
{
"query": {
"filtered": {
"query": {
"match": {
"genre": "autobiography"
},
"multi_match" : {
"query": "Johnny Appleseed",
"fields": ["author", "publication_date", "isbn", "genre"]
}
},
"filter": {
"type": {
"value": "books"
}
}
}
}
}
答案 0 :(得分:0)
_all是解决此问题的正确选择。 链接 - http://www.elastic.co/guide/en/elasticsearch//reference/current/mapping-all-field.html
默认_all是一个附加字段,包含来自所有字段的所有标记。这使其成为文档级非结构化搜索的理想选择。 现在_all适用于所有字段,对我们而言可能不是通用的。 在这种情况下,在映射中,您可以将include_in_all设置为false,以表示您不希望出现在_all中的字段。 因此,您可以只搜索_all。
,而不是进行多重搜索