【问题标题】:Searching multiple index with different fields搜索具有不同字段的多个索引
【发布时间】:2019-03-26 09:46:42
【问题描述】:

我们正在使用 ES 并正确获取 1 个带有搜索字段的索引的响应。我需要以下建议:

问题:我有不同的对象,如联系人,帐户有记录,可通过帐户搜索(姓名字段将用于搜索)在联系人(电子邮件,电话字段将用于搜索)

  1. 我是否应该使用 1 个索引并将联系人和帐户保持在具有不同类型(帐户、联系人)的同一索引中以分隔记录。
  2. 我是否应该创建 2 个索引,1 个用于帐户,另一个用于联系人。 无论是优选的,请给我搜索提示。它将如何根据不同的字段进行搜索。

非常感谢!

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:


    这是我在官方网站上找到的答案。

    1. 最好为每种类型(帐户、联系人)等设置单独的索引。

    2. 使用以下类型的搜索 json 在所有索引中搜索。

    {"index" : "contacts"} {"query" : {"match_all" : {}}} {"index" : "accounts"} {"query" : {"match_all" : {}}}

    curl -H "Content-Type: application/x-ndjson" -XGET localhost:9200/_msearch --data-binary "@requests";回声

    谢谢

    【讨论】:

      【解决方案2】:

      我认为您应该了解您的用例。假设有很多搜索查询将要访问帐户和联系信息等信息,那么我建议创建一个索引。它将帮助您执行复杂的查询,如聚合等。

      它还可以帮助您从帐户和联系信息中选择多个字段。

      如果查询要完全隔离,那么您应该使用不同的专用索引。您可以简单地提及多个索引名称,以逗号分隔 check this

      例子:

      curl -XGET 'localhost:9200/account,contact/_search?pretty' -H 'application/json' -d'
      {
          "query":{
              "name":"foo"
          }
      }'
      

      【讨论】:

        【解决方案3】:

        在您的情况下,1 个帐户可能有多个联系人,因此最好将帐户和联系人放在单独的索引中。 Elasticsearch 支持多索引搜索,可用于对多个索引执行搜索。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-22
          • 2016-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多