Как проверить, что входное значение находится в пределах диапазона или нет в упругом поиске, используя DSL QUERY - PullRequest
0 голосов
/ 24 октября 2018

У меня есть две сущности, такие как Пользователь и активность.Активность содержит поле ageGroup, например ["10:20", "25:30"] и поле пользователя, содержащее поле возраста.учитывайте, что возраст пользователя составляет 26 лет, поэтому он / она имеет право на эту деятельность.Я хочу получить все те действия, которые удовлетворяют вышеуказанным условиям

GET _search
{
"query": {

    "bool": {
        "filter": {
          "range": {
            "ageGroup": {
              "gte": 50,
              "lte": 55
            }
          },
          "term": {"****": "M"}
        },  
      "must": [
        {
          "term": {"******": {"value": "15"}}

        }
      ] ,"should": [
               {
                   "match": {"******": "7"}
               },
               {
                   "match": {"******": "1"}
               }
            ]
    }
 }
}

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Вы также можете использовать тип данных integer_range для проверки значения в пределах диапазона или нет https://www.elastic.co/guide/en/elasticsearch/reference/current/range.html

0 голосов
/ 26 октября 2018

Включить (сущность / объект) содержит список

public class Include {
@Field(type= FieldType.Nested)
private List<AgeGroup> age;
}

Данные: {....., include.age: {"id": 4, "minAge": 4, "maxAge":9}, {"id": 3, "minAge": 1, "maxAge": 4}, .....}

DSL-запрос:

GET /_search
    {
        "query": {

         "bool": {
           "should": [
                {"range": {"include.age.minAge": {"lte": 9}}},
                {"range": {"include.age.maxAge": {"gte": 9}}
                }
              ],"minimum_should_match": 2
         } 

        }
    }
...