2016-08-29 3 views
0

Например, у меня есть список лиц с age.
На моей странице поиска, я позволяет пользователю запрашивать этот список базы на диапазон возраста:Может ли Elasticsearch предлагать диапазон запроса для полей чисел?

"mus" : { 
    "range" : { 
     "age" : { "from" : 60, "to" : 80 } 
    } 
}, 

Пусть говорят, что выше обратный запрос 0 результат (так как мой список включает только человек, от 20 до 50), сделать ES поддерживает любой метод, чтобы вернуть предложение для этого запроса диапазона (в данном случае [20, 50])?

ответ

0

Да, вы можете использовать агрегацию histogram, чтобы получить эти подсчеты.

{ 
    "post_filter": { 
    "bool": { 
     "must": { 
     "range": { 
      "age": { 
      "from": 60, 
      "to": 80 
      } 
     } 
     } 
    } 
    }, 
    "aggs": { 
    "ages": { 
     "histogram": { 
     "field": "age", 
     "interval": 10 
     } 
    } 
    } 
} 

выше запрос возвратит:

  • все документы, в которых age поле находится между 60 и 80
  • количество документов, чье age поле находится в пределах 10-летних ведер, т.е.
    • для возраста от 10 до 20: 4 документов (поддельный номер)
    • для возрастной ставки WEEN 20 и 30: 6 документов (фальшивый номер)
    • для возраста от 30 до 40: 12 документов (подделка номер)
    • для возраста между 40 и 50: 2 документов (подделка номер)
    • ...
+0

Спасибо! Это идеальный ответ !!! – nvcnvn

+0

Удивительно, здорово! – Val

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