Elasticsearch mapping: есть ли недостаток в использовании текста типа для свойств, которые являются ключевыми по природе? - PullRequest
0 голосов
/ 15 мая 2019

Мой стек: Elasticsearch 5.4 (с соответствующей версией java-клиента и kibana)

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

    {
      "string_fields": {
        "match": "*",
        "match_mapping_type": "string",
        "mapping": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }

Я индексирую около 30 тыс. документов в секунду, и количество уникальных неизвестных свойств может быть большим (около 5 тыс. по всем индексам).

Вопросы:
Есть ли какое-либо снижение производительности (задержка / вычисление / память / диск), о котором я должен беспокоиться при индексации свойств как текста, где на самом деле они должны быть только ключевыми по своей природе?

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

1 Ответ

1 голос
/ 15 мая 2019

Вы должны обязательно попытаться идентифицировать эти поля, а не отображать их как text.Существует нагрузка, связанная с текстовыми полями, когда они проходят конвейер анализа.Их значения токенизируются, фильтруются и индексируются.

Если вам когда-либо потребуется выполнить полнотекстовый поиск по ним, то определенно индексируйте их как текст, в противном случае старайтесь не делать этого.Вы сэкономите циклы ЦП и дисковое пространство при индексировании, кучу при запросах и время при перезапуске кластера (поскольку ваши индексы будут меньше).

Я только поцарапал здесь поверхность, но суть в том, чточто text идет с бременем, ключевое слово гораздо меньше.

...