我有两种类型Author
和Book
。我想搜索两种类型并返回字段Author.name
和Book.title
中的匹配项。我该如何完成此查询?
GET /bookstore/author,book/_search
...
答案 0 :(得分:5)
您可以查询索引,而不仅仅是类型:/ 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
答案 1 :(得分:1)
根据您要完成的任务,有一些方法。
如果书中没有属性“name”,并且作者没有属性“title”,则可以搜索。如果搜索不存在的字段,弹性搜索仍然会尝试模型中的数据是无模式的,并且映射只是定义如何索引字段,但不一定定义文档的结构。
如果您尝试对图书和作者进行单一搜索,那么我建议您进行2次单独查询,因为您将获得2种不同类型的文档,这些文档可能需要相应处理。