Карты против списков в Elasticsearch для оптимизации производительности запросов - PullRequest
4 голосов
/ 17 марта 2020

У меня есть некоторые данные, которые я буду помещать в Elasticsearch, и я хочу выбрать формат, который оптимизирует производительность запросов. Запрос будет в словах: «Идентификатор X в категории Y?». У меня есть фиксированное количество категорий (скажем, маленькое, 5) и, возможно, большое количество идентификаторов для каждой категории (в настоящее время их десятки, но неопределенного размера в будущем). Каждый идентификатор будет принадлежать не более одной категории (возможно, ни одной).

Формат 1:

{
  "field1": "value1",
  ...
  "categories": {
    "category1": ["id10", "id24", "id38",...],
    ...
    "category5": ["id62", "id19", "id82" ...]
  }
}

или

Формат 2:

{
  "field1": "value1",
  ...
  "categories": {
    "id1": "category4",
    "id2": "category2",
    "id3": "category1",
    ...
  }
}

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

1 Ответ

0 голосов
/ 18 марта 2020

Я думаю, что метод 1 лучше, Id будет больше в будущем, если вы нажмете метод 2, то вам может понадобиться закрыть индекс категорий или увеличить количество полей индекса, и использование метода 1 может быть более удобным для определить тип одного идентификатора (indeOf). Есть плюсы и минусы. Может быть, есть лучший способ.

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