@beb59

Почему elasticsearch не фильтрует по range?

Добрый день

очень странно работает elastic search, не фильтрует или криво фильтрует по range
Фильтрую по полю price, тип integer

Этот запрос возвращает 1 запись
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "price": {
              "gte": 100,
              "lte" : 10000000
            }
          }
        }
      ]
    }
  }
}


Возвращает
{
    "took": 3,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 0.0,
        "hits": [
            {
                "_index": "indexsearchj",
                "_type": "_doc",
                "_id": "4064",
                "_score": 0.0,
                "_source": {
                    "name": "Раз два три",
                    "id": 4064,
                    "id_category": 1,
                    "price": 100000,
                    "is_my": 1,
                    "business_type": "3",
                    "area": "1123",
                    "property-type": "1",
                    "itemType": "2",
                    "metro": "18",
                    "metro-closest": "7"
                }
            }
        ]
    }
}


а вот этот больше
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "price": {
              "gte": 100,
              "lte" : 6000000
            }
          }
        }
      ]
    }
  }
}


{
    "took": 5,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 12,
            "relation": "eq"
        },
        "max_score": 0.0,
        "hits": [
            {
                "_index": "indexsearch",
                "_type": "_doc",
                "_id": "1311",
                "_score": 0.0,
                "_source": {
                    "name": "",
                    "id": 1311,
                    "id_category": 1,
                    "price": 60000,
                    "is_my": 0,
                    "area": "40",
                    "property-type": "1",
                    "itemType": "2",
                    "business_type": "3",
                    "metro": "4",
                    "metro-closest": "8"
                }
            },


очень странное поведение, и не понимаю уже куда смотреть
  • Вопрос задан
  • 333 просмотра
Пригласить эксперта
Ответы на вопрос 3
akelsey
@akelsey
Либо filter либо range (и, или), а у вас filter { range }. думаю проблема в этом.
Вероятно это должно быть вроде:
"query": {
    "range": {
      "price": {
        "gte": 100,
        "lte": 10000000
      }
    }
  }
Ответ написан
Комментировать
@beb59 Автор вопроса
нет, так тоже выдает не правильно
Ответ написан
Комментировать
@siri0s
У вас запросы идут в разные индексы. Первый в "indexsearchj", второй в "indexsearch"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 300 000 до 400 000 ₽
LIME Москва
от 280 000 до 350 000 ₽
26 нояб. 2024, в 09:17
40000 руб./за проект
26 нояб. 2024, в 08:55
10000 руб./за проект
26 нояб. 2024, в 04:41
1500 руб./за проект