【问题标题】:Multi-field, multi-type search in ElasticsearchElasticsearch 中的多字段、多类型搜索
【发布时间】:2015-03-11 09:15:23
【问题描述】:

我有两种类型 AuthorBook。我想搜索这两种类型并从字段Author.nameBook.title 返回匹配项。我将如何完成此查询?

GET /bookstore/author,book/_search ...

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以对索引进行查询,而不仅仅是类型:/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

    【讨论】:

      【解决方案2】:

      根据您要完成的工作,有几种方法。

      1. 您可以对数据进行建模,以便您 将作者的索引值存储在书籍类型中,可能还有一个 引用该作者。
      2. 否则你应该可以查询2种类型,但是你不能 指定要在哪种类型中搜索的值。这些将 技术上是 2 个单独的查询,你必须混合 2 如果这是您想要的结果,您自己会得到结果。

      如果图书没有属性“name”,并且作者没有属性“title”,则可以同时搜索。如果您搜索一个不存在的字段,elasticsearch 仍然会尝试,因为模型中的数据是无模式的,并且映射只定义了如何索引字段,但不一定定义文档的结构。

      如果您尝试同时搜索书籍和作者,那么我建议您进行 2 次单独的查询,因为您将获得 2 种可能需要相应处理的单独类型的文档。

      【讨论】:

        猜你喜欢
        • 2015-09-12
        • 2018-12-22
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        • 2021-12-06
        • 1970-01-01
        相关资源
        最近更新 更多