Создайте индекс вasticsearch с различными типами документов - PullRequest
0 голосов
/ 17 октября 2019

Мне нужно индексировать "КЛИЕНТА" сущность в упругой. Мой объект "КЛИЕНТ" состоит из нескольких сегментов (документы JSON), таких как

COMMON (firstname, lastname etc),
EDUCATION (fields...),
JOB (fields...) and so on. 

Так что мой индекс должен хранить все эти сегменты (документы JSON). Затем я должен искать по различным комбинациям полей и сегментов, таких как: search word "university" in COMMON.firstname, COMMON.lastname, EDUCATION.field1, EDUCATION.field2. И могу ли я вернуть результаты поиска в виде списка КЛИЕНТА со всеми сегментами

1 Ответ

0 голосов
/ 17 октября 2019

Я бы сказал, что документ может выглядеть следующим образом

{
  ...common properties,
  "education": {
    ...education properties
  },
  "job": {
    ...job properties
  }
}

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

PUT /client/doc/1
{
  "firstName": "...",
  "lastName": "...",
  ...other common properties,
  "education": {
    ...education properties
  },
  "job": {
    ...job properties
  }
}

Где client - имя индекса, doc - тип, а 1 - идентификатор нового документа.

И затем вы можете получить список клиентов (по умолчанию 10), выполнив

GET /client/doc/_search

Для поиска вы можете выполнить (это также вернет максимум 10 документов, так как 10 по умолчанию)

GET /client/doc/_search
{
  "query": {
    "query_string" : {
      "query" : "firstName:university OR lastName:university OR education.field1:university OR education.field1:university",
      "default_field" : "content"
    }
  }
}

Если вы хотите явно указать типы данных для всех или некоторых свойств, обратите внимание на динамическое отображение . В противном случае типы данных по умолчанию будут назначаться на основе значений, таких как «текст» для строковых значений и т. Д.

...