Задать вопрос
@Tiasar
Web Developer

Что не так с фильтрами Elasticsearch?

Версия elasticsearch - 6.0.0

на такой запрос:
{
	"size": 50,
	"query": {
		"bool": {
			"must": {
				"wildcard": {
					"keywords": {
						"value": "*chero*",
						"boost": 2
					}
				}
			},
			"filter": {
				"terms": {
					"category_id": [33, 35]
				},
				"range": {
					"access_index": {"lte": 10}
				}
			}
		}
	}
}


получаю ответ [terms] malformed query, expected [END_OBJECT] but found [FIELD_NAME]
стоит убрать один из фильтров
"terms": {
					"category_id": [33, 35]
				},

"range": {
					"access_index": {"lte": 10}
				}

то все ищется как надо...
как правильно использовать оба фильтра в связке AND

подсматривал тут: https://www.elastic.co/guide/en/elasticsearch/refe...
  • Вопрос задан
  • 742 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Tiasar Автор вопроса
Web Developer
Вот так все работает на elasticsearch версии 6.0.0
{
  "query": { 
    "bool": { 
      "must": {
        "wildcard": {
          "keywords": {
            "value": "автобус*",
            "boost":2
          }
        }
      },
      "filter": [ 
        { "terms":  { "category_id": [33, 35] }}, 
        { "range": { "access_index": { "lte": 30 }}} 
      ]
    }
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Оба фильтра заверните в bool, а уже потом вставляйте их в сам фильтр
...
     filter
          bool
               must
                   terms
                   range
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы