Я планирую использовать эластичный поиск для индексации атрибутов продукта. Каждый документ должен иметь около 60 фиксированных полей. Я читал документацию о настройке скорости поиска . В нем упоминается, что когда запрос query_string или multi_match предназначен для нескольких полей, производительность снижается. Применяется ли этот оператор для match или match_phrase запросов?
Пример
Запрос 1:
{
"mappings": {
"properties": {
"case_color": {
"type": "text", // keyword type is not flexible enough in my case
},
"case_finish": {
"type": "text",
}
}
}
}
{
"query": {
"bool": {
"must": [
{
"match": {
"case_color": {
"query": "blue"
}
}
},
{
"match": {
"case_finish": {
"query": "polished"
}
}
}
]
}
}
}
Запрос 2:
{
"mappings": {
"properties": {
"case": {
"type": "text",
},
}
}
}
{
"query": {
"bool": {
"must": [
{
"match": {
"case": {
"query": "blue color"
}
}
},
{
"match": {
"case": {
"query": "polished finish"
}
}
}
]
}
}
}
Лучше ли поместить цвета корпуса и атрибуты fini sh в одно большое поле "case", чем разбивать их на разные поля?
Однако, поместив все атрибуты, связанные с регистром, в поле "case", оно будет содержать больше слов:
case: blue color, brushed and matte finish, plastic material
Разделив их на разные поля, в каждом поле будет меньше слов:
case_color: blue
case_finish: brushed and matte
material: plastic
Я хотел бы знать, какой подход лучше.