Я хочу использовать эластичный поиск для поиска различных данных.Я построил индекс с моими данными, и теперь я нахожусь в точке, где мне нужно построить запрос, основанный на выбранных пользователями фильтрах.
И в данный момент я просто застрял, когда моя голова взрывается, потому что запрос boolКажется, что он настолько силен, что я просто не могу его собрать ...
Я хочу объединить динамическое количество фильтров и, возможно, реальный поисковый запрос.
Так что я решил использовать запрос boolэто путь.
мое понимание (из чтения документов!) было (вот как выглядит мой "dsl"):
{
"from": 0,
"size": 10,
"sort": [
{"sortTitle": "asc"},
"_score"
],
"query": {
"bool": {
"filter": [
{
"term": {
"someBoolFlag": true
}
}
]
}
}
}
Я хотел бы начать там, а затем реализоватьфильтр по фильтру.Текстовый поиск был бы вставлен как обязательная часть фильтра bool, поэтому в теории я должен был бы получить:
{
"from": 0,
"size": 10,
"sort": [
{"sortTitle": "asc"},
"_score"
],
"query": {
"bool": {
"must": {
"query_string": {
"query": "*foo*",
"fields": [
"title^2",
"description^1.5",
"keywords"
]
}
}
"filter": [
{
"term": {
"someBoolFlag": true
}
},
{
"terms": {
"someProperty": [
"someValue1",
"someValue2"
]
}
}
]
}
}
}
Но я не получил бы здесь никаких результатов ... Я думаю, что не сделалЯ действительно понимаю, как работает эта фильтрация и boolquery, так что, возможно, кто-то может дать мне подсказку ...
Мне действительно нравится эластичный, но человек, которого я должен сказать - "запрос dsl" - это PURE HORROR.
С уважением