Сложные запросы с использованием 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
           }
         }]
     }}
Другие вопросы по тегам