搜索具有不同字段的多个索引

时间:2019-03-26 09:46:43

标签: elasticsearch

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

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

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

非常感谢您!

3 个答案:

答案 0 :(得分:0)


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

  1. 最好为每种类型(客户,联系人)等使用单独的索引。

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

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

curl -H“内容类型:应用程序/ x-ndjson” -XGET localhost:9200 / _msearch --data-binary“ @requests”;回声

谢谢

答案 1 :(得分:0)

我认为您应该知道您的用例。假设将要访问很多搜索查询,这些查询将同时访问帐户和联系信息之类的信息,那么我建议做一个索引。它将帮助您执行复杂的查询,例如聚合等。

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

如果查询要完全隔离,则应该使用不同的专用索引。您只需用逗号分隔的check this

来提及多个索引名称

示例:

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

答案 2 :(得分:0)

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