@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": [
                     "красный",
                     "синий"
                  ]
               }}
            ]
            
        }
    }


В данном запросе вываливаются все, у кого есть свойство цвет, но цвета у них не (красный или зеленый). Как исправить запрос?
  • Вопрос задан
  • 198 просмотров
Решения вопроса 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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
SpectrumData Екатеринбург
от 300 000 до 400 000 ₽
LIME Москва
от 280 000 до 350 000 ₽
22 нояб. 2024, в 12:20
10000 руб./за проект
22 нояб. 2024, в 11:53
3000 руб./за проект
22 нояб. 2024, в 11:51
20000 руб./за проект