Как правильно организовать данные в индексе в Elasticsearch?

Здравствуйте.

Есть некая сущность с характеристикой, которая может иметь произвольное количество текстовых значений. Например:
"entity1": { "param": ["1", "2", "3"] }
"entity2": { "param": ["1", "2"] }

Необходим поиск по значениям характеристики (в cлучае примера по значениям "param").
Подскажите, как лучше записывать данные для поиска в Elasticsearch? Каждое значение класть в ES отдельной записью? Или создавать какую-то структуру? Или ещё как? Важна больше скорость поиска, чем скорость индексации.
  • Вопрос задан
  • 514 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Vdm17
PHP Developer
Если это будут просто массивы данных, то достаточно использовать стандартный маппинг для поля и обычные запросы query term/terms.

Минимальный маппинг (ES 5.0+)
...
"param": {"type": "keyword"}
...


При заполнении данных просто передаете массив значений. Дополнительно ничего настраивать не надо.

Поиск по одному значению (пример запроса для Sense)
GET your_index/your_type/_search
{"query": {"term": {"param": {"value": "2"}}}}


Поиск по нескольким значениям (пример запроса для Sense)
GET your_index/your_type/_search
{"query": {"terms": {"param": ["2", "1"]}}}


Примерно вот так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы