2015-03-05 5 views
0

Рассмотрим 2 документа в индексе, как, как показано ниже:Упругие Поисковый запрос диапазон

{ 
      "_index": "32", 
      "_type": "places", 
      "_id": "_FqlAzzSRN6Ge_294D5Mwg", 
      "_score": 1, 
      "_source": { 
       "name_3": "xxxx", 
       "id_3": "xxxxx", 
       "name_2": "xxxx", 
       "id_2": "xxx", 
       "name_1": "xxx", 
       "id_1": "xxx", 
       "tempid": "xxxxx", 
       "field1": 316.6666666666667, 
       "type": "processeddata" 
      } 
     }, 
     { 
      "_index": "32", 
      "_type": "places", 
      "_id": "3RCO-zHeSr2nWFZd8W-MDg", 
      "_score": 1, 
      "_source": { 
       "name_3": "yyyy", 
       "id_3": "yyy", 
       "name_2": "yyy", 
       "id_2": "yyy", 
       "name_1": "yyyy", 
       "id_1": "yyy", 
       "tempid": "yy", 
       "field2": 400.6666666666667, 
       "type": "processeddata" 
      } 
     } 

Я хочу построить запрос для следующего сценария. Я должен найти документы для поля в определенном диапазоне.

Поле1: 200-400 Поле2: 300-400, поэтому должны быть указаны вышеприведенные 2 документа.

Мой запрос выглядит следующим образом:

"query": { 
    "bool": { 
     "must": [ 
     { 
      "range": { 
      "field1": { 
       "gte": 200, 
       "lte": 400 
      } 
      },"range": { 
      "field2": { 
       "gte": 300, 
       "lte": 400 
      } 
      } 
     } 
     ] 
    } 
    } 

Но выше запрос «выглядит для 2-х полей в опалить документе, так что результат не приходит, так что я должен сделать, чтобы найти, если какой-либо из поданных удовлетворяет. диапазон в документе должен вернуться Пожалуйста, поделитесь своими идеями заранее спасибо

ответ

0

Вы должны использовать bool should и не bool must Это означало бы соответствовать любой документ, который соответствует по крайней мере одно условие ПРИМЕЧАНИЕ:..... Ваше второе условие выиграл 't соответствует второму документу, так как 400.66 не попадает в диапазон [300, 400].

Смежные вопросы