【发布时间】:2015-03-11 09:15:23
【问题描述】:
我有两种类型 Author 和 Book。我想搜索这两种类型并从字段Author.name 和Book.title 返回匹配项。我将如何完成此查询?
GET /bookstore/author,book/_search ...
【问题讨论】:
标签: elasticsearch
我有两种类型 Author 和 Book。我想搜索这两种类型并从字段Author.name 和Book.title 返回匹配项。我将如何完成此查询?
GET /bookstore/author,book/_search ...
【问题讨论】:
标签: elasticsearch
您可以对索引进行查询,而不仅仅是类型:/yourindex/_search。
现在,您应该使用多重匹配查询来更好地控制结果:
{
"multi_match" : {
"query": "Will Smith", "fields": [
"type1.title", "type2.name"
]
}
}
更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html
【讨论】:
根据您要完成的工作,有几种方法。
如果图书没有属性“name”,并且作者没有属性“title”,则可以同时搜索。如果您搜索一个不存在的字段,elasticsearch 仍然会尝试,因为模型中的数据是无模式的,并且映射只定义了如何索引字段,但不一定定义文档的结构。
如果您尝试同时搜索书籍和作者,那么我建议您进行 2 次单独的查询,因为您将获得 2 种可能需要相应处理的单独类型的文档。
【讨论】: