2015-07-17 3 views
1

У меня есть следующие JSON объект:Вложенный фильтр числовой диапазон

{ 
    "Title": "Terminator, 
    "Purchases": [ 
    {"Country": "US", "Site": "iTunes", "Price": 4.99}, 
    {"Country": "FR", "Site": "Google", "Price": 5.99} 
    ] 
} 

Я хочу, чтобы иметь возможность найти объект, задающий Страна + сайта + PriceRange. Например, приведенное выше должно возвращать значение True на Country=US&Price<5.00, но должно возвращать значение False на Country=FR&Price<5.00. Как будет выглядеть индекс и запрос? Вот еще один ответ, что это следующий вопрос: Search within array object.

ответ

1

Просто добавьте запрос диапазона в свое логическое дерево запросов Bool. Это вернет документы, соответствующие США для страны, и поле Price с числовым значением менее 5.

{ "query": 
    { "nested" : { 
      "path" : "Purchases", 
      "score_mode" : "avg", 
      "query" : { 
       "bool" : { 
        "must" : [ 
         { 
          "match" : {"Purchases.Country" : "US"} 
         }, 
         { 
          "range" : "Purchases.Price": 
          { 
           "lte": 5 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 
Смежные вопросы