@Oleg-Ukraine

Как правильно составить запрос в ElasticSearch?

Хранятся у меня в таком формате продукты в Эластике
{
            "_index": "market",
            "_type": "products",
            "_id": "4",
            "_score": 0.5619608,
            "_source": {
               "id": 4,
               "title": "Zora",
               "category_id": 3,
               "price": "35000.00",
               "characteristicValue": [
                  {
                     "id": 1,
                     "name": "Красный",
                     "characteristic": {
                        "id": 2,
                        "name": "color"
                     }
                  }
               ]
            }
         }


Мне надо сделать фильтрацию по свойствам продукта.

В частности рассматриваю по одному фильтру

"query": {
        "bool": {
            "must": [
               {"match": {
                  "characteristicValue.characteristic.name": "color"
               }}
            ],
            "should": [
               {"terms": {
                  "characteristicValue.name": [
                     "красный",
                     "синий"
                  ]
               }}
            ]
            
        }
    }


В данном запросе вываливаются все, у кого есть свойство цвет, но цвета у них не (красный или зеленый). Как исправить запрос?
  • Вопрос задан
  • 190 просмотров
Решения вопроса 1
@RidgeA
то, что в should переместить в must

https://www.elastic.co/guide/en/elasticsearch/refe...

If the bool query is in a query context and has a must or filter clause then a document will match the bool query even if none of the should queries match. In this case these clauses are only used to influence the score.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы