Улучшение производительности фильтра эластичного поиска - PullRequest
0 голосов
/ 06 января 2020

У меня есть кластер ES с 3-мя узлами данных (8 ядер, 16 ОЗУ, 500 SSD) с индексом в 1 день (6 сегментов) с 12 миллионами записей в день.

Каждая запись похожа на CSV с 40 столбцами, и я проиндексировал 8 из них, поскольку могу сделать запрос не более, чем среди этих 8, поэтому каждая запись выглядит так (я обозначаю index = true):

sellerNumber (I), покупательNumber (I), количество (I), тип (I), категория (I), bla1, bla2, .... bla30

Обратите внимание, что все вышеперечисленное Is является ключевым словом, кроме количество.

Теперь, если я сделаю запрос, например:

{
"from": 0,
    "query": {
        "bool": {
            "filter": [
                {
                    "term": {
                        "sellerNumber": { 
                            "value": "7338964890"
                        }
                    }
                }
            ]
        }
    }
}... and so many filters/must_not to keep search in filter context

Теперь проблема заключается в том, что если только условие с одним термином для sellerNumber выше, для каждого индекса Cumulative Time: 330.373ms (идет 1- 2 se c при поиске данных за последние 7-8 дней), что недопустимо, поскольку любая RDB сделает это за 50 мс в таблице из 10 млн записей.

информация о сопоставлении для sellerNumber: "mappings": {"sellerNumber": {"full_name": "sellerNumber", "mapping": {"sellerNumber": {"тип": "ключевое слово"}}}}

Есть ли способ повысить производительность?

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