Elasticsearch: как лучше создать несколько индексов по сравнению с одним индексом для разных наборов данных? - PullRequest
0 голосов
/ 22 апреля 2020

В системе ERP в одной базе данных содержится более 2000 таблиц, содержащих более 100 тыс. Строк. Чтобы улучшить пользовательский опыт поиска, мы извлекаем данные из MySQL в Elasticsearch. Каждая таблица может иметь от 3 до 5 столбцов, но имена и типы столбцов различны.

Существует 2 варианта создания индексов ES:

Опция 1: Просто создайте один индекс в ElasticSearch, но индекс будет содержать более 1000 полей. Это сопоставление выглядит так:

{
"myIndices": {
    "mappings": {
        "data": {
            "properties": {
                "datatype": {
                    "type": "string"
                },
                "table1_userName": {
                    "type": "string"
                },
                "table1_userAddr": {
                   "type": "string"
                },
                "table2_post": {
                    "type": "string"
                },
                "table2_tags": {
                    "type": "string"
                },
                "table3_comment": {
                    "type": "string"
                },

                ...

                "table999_xxxx": {
                    "type": "string"
                },
            }
        }
    }
}

Но я беспокоюсь, что этот параметр вызовет проблемы с производительностью, поскольку существует очень много разреженных данных. (Каждый документ / строки имеет только 3 ~ 4 допустимых поля). Между тем, ES6 ~ 7 убрал функцию «типы», каждый индекс должен содержать только одну модель данных, поэтому мы используем пользовательское поле «тип данных», чтобы указать, какие типы нам нужно запрашивать.

Опция 2 : создание нескольких индексов: создание индекса для каждой модели. Но будут созданы тысячи индексов, что значительно увеличивает стоимость обслуживания индексов.

Какой из них является наилучшим?

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