Сложные запросы с использованием ElasticSearch
Я только начал с es, и я хочу знать, как я могу написать запрос, чтобы выполнить поиск как "3 кровати в городе 1" или "2 ванны в городе 1 около школы 2". Насколько я понимаю, мы можем обработать 3 кровати / кровать / кровать / спальня с использованием синонимов, но откуда мне знать, что "3 кровати в городе 1" означает, что мне нужно искать 3 на поле коек и City1 в полях города?
Вот мой примерный набор данных.
{
Address :
{
City : "City 1",
Zip : 21222
},
Beds : 3,
Baths : 2,
Schools :
[
"School 1",
"School 2"
]
},
{
Address :
{
City : "City 2",
Zip : 21220
},
Beds : 1,
Baths : 1,
Schools :
[
"School 3",
"School 2"
]
}
Заранее спасибо!
1 ответ
3 кровати в городе 1 как условие И между 2 пунктами. Используйте bool и должны построить запрос. Попробуйте прочитать предложения bool: должен, должен и не должен. Их комбинации будут служить тому, что вы смотрите.
query: {
bool: {
must: [{
term: {
address.city : {
value: City1
}
},{
term: {
beds : {
value: 3
}
}]
}}