Я хочу оптимизировать оператор запроса elasticsearch
{
"from": 0,
"size": 24,
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "puzzle",
"fields": [
"editorialTags^1.0",
"sellerTags^1.0"
],
"type": "most_fields",
"operator": "OR",
"slop": 0,
"prefix_length": 0,
"max_expansions": 50,
"minimum_should_match": "3<75%",
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"fuzzy_transpositions": true,
"boost": 1
}
}
],
"filter": [
{
"bool": {
"must": [
{
"nested": {
"query": {
"terms": {
"products.productTypeId": [
1233
1234,
1235,
1236,
1239,
1247,
1248,
1287,
1290,
1292
],
"boost": 1
}
},
"path": "products",
"ignore_unmapped": false,
"score_mode": "avg",
"boost": 1
}
},
{
"nested": {
"query": {
"term": {
"products.locations": {
"value": "US-1",
"boost": 1
}
}
},
"path": "products",
"ignore_unmapped": false,
"score_mode": "avg",
"boost": 1
}
},
{
"nested": {
"query": {
"terms": {
"products.storeId": [
490227
],
"boost": 1
}
},
"path": "products",
"ignore_unmapped": false,
"score_mode": "avg",
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"explain": false,
"_source": {
"includes": [
"designId",
"memberId",
"isPersonalizable",
"sellerTags",
"products.productId",
"products.productTypeId",
"products.imageOneId",
"products.imageTwoId",
"products.hasPersonalizableSvg",
"products.storeId",
"products.caption"
],
"excludes": []
}
}
У меня есть приведенный выше оператор запроса, иногда для получения ответа требуется около 2 секунд. Для индекса ниже ситуация:
uuid pri rep docs.count docs.deleted store.size pri.store.size
9fQDPMIfQIK0SyI-lBzGvw 14 1 888171159 46669 532.4gb 266.1gb
У меня 14 узлов данных, r6g.4xlarge.search(16 ядер, 128 ГБ, SSD) на AWS(OpenSearch)
Мне любопытно, что всегда есть отдельные машины с особенно высокой загрузкой процессора, поддержка AWS не может дать разумного объяснения, поэтому я решил найти проблему из запроса.
Я попытался добавить узлы данных к 18, но решил эту проблему.