Поиск по нескольким индексам с разными полями - PullRequest
4 голосов
/ 26 марта 2019

Мы используем ES и правильно получаем ответ для 1 индекса с полями поиска.Мне нужны предложения о следующем:Проблема: у меня есть различные объекты, такие как контакт, в учетной записи есть записи, по которым можно выполнить поиск в учетной записи (поле имени будет использоваться для поиска), где в контакте (электронная почта, поле телефона будет использоваться для поиска)

  1. Должен ли я использовать 1 индекс и сохранять контакт и учетную запись в одном индексе с другим типом (учетная запись, контакт) для разделения записей.
  2. Должен ли я создать 2 индекса, 1 для учетной записи и еще один для контакта.Что бы ни было предпочтительным, пожалуйста, дайте мне советы по поиску.Как будет выполняться поиск по разным полям.

Большое вам спасибо!

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

Я думаю, вы должны знать свой вариант использования.Предположим, будет много поисковых запросов, которые будут получать доступ к информации, такой как учетная запись и контактная информация. Тогда я бы предложил создать один индекс.Это поможет вам выполнять сложные запросы, такие как агрегация и т. Д.

Это также поможет вам выбрать несколько полей из учетной записи, а также контактную информацию.

Если запрос будет полностью изолированным, тогда вам следует использовать разные выделенные индексы.Вы можете просто указать несколько имен индексов через запятую отметьте это

Пример:

curl -XGET 'localhost:9200/account,contact/_search?pretty' -H 'application/json' -d'
{
    "query":{
        "name":"foo"
    }
}'
0 голосов
/ 28 марта 2019

В вашем случае 1 учетная запись может иметь несколько контактов, поэтому лучше иметь учетную запись и контакты в отдельном индексе. Elasticsearch поддерживает многоиндексный поиск, который можно использовать для выполнения поиска по нескольким индексам.

0 голосов
/ 28 марта 2019


Вот мой ответ, который я нашел на официальном сайте.

  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"; эхо

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...