Всем привет, Пытаюсь построить релевантный поиск на сайте. и частично реализовал.
Этот запрос уже был
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [{
"terms": {
"visibility": [3, 4]
}
}, {
"terms": {
"status": [0, 1]
}
}, {
"terms": {
"sku": ["5111-0243", "9901-0131", "5111-0202", "5111-0301", "5115-0071"]
}
}]
}
},
"must": {
"query_string": {
"fields": ["name"],
"query": "*Ка*"
}
}
}
}
}
А этот блок написал отдельно и вроде он выдаёт нужный мне результат только без фильтров.
{
"query": {
"simple_query_string": {
"query": "Кар*",
"fields": [
"name^2",
"shot_name"
],
"default_operator": "and",
"analyze_wildcard": true
}
}
}
Но когда я совместил их вместе, Elastic ничего не возращает, и куда бы я не переставлял мой блок, он ругается либо пустой ответ. Так вот , кто знаком с этой темой , скажите
в каком порядке нужно использовать эти логические блоги ? Т.к
bool -> filter -> bool -> must немного смущает, я выносил за их пределы, в
Bool и в
filter выдаёт ошибку .
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"terms": {
"visibility": [
3,
4
]
}
},
{
"terms": {
"status": [
0,
1
]
}
},
{
"terms": {
"sku": [
"5111-0243",
"9901-0131"
]
}
}
]
}
},
"simple_query_string": {
"query": "Кар*",
"fields": [
"name^2",
"shot_name"
],
"default_operator": "and",
"analyze_wildcard": true
}
}
}
}