Эластичный поиск "А" или "пустой"

0

Вопрос

У меня есть следующий индекс индекс

{
  "docs": {
    "mappings": {
      "text": {
        "properties": {
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
          "code": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

"код" может иметь значения: ["a"], ["b"],["a","b"] или []

Мне нужен запрос для сброса значений с помощью кода: "a" или []. Может ли кто-нибудь помочь с этим запросом, вот что я пробовал до сих пор без успеха (кажется, здесь написано "а" И "[]"; Я хочу "а" ИЛИ "[]").

"bool": {
  "should": [
    {
      "match": {
        "code": "a"
      }
    }
  ],
  "must_not": [
    {
      "exists": {
        "field": "code"
      }
    }
  ]
}
  
elasticsearch elasticsearch-dsl
2021-11-18 20:21:18
1

Лучший ответ

0

ИЛИ может быть достигнуто с помощью bool/should, но в bool/must ограничение должно быть внутри bool/should.

Вы должны попробовать с этим запросом:

{
  "query": {
    "bool": {
      "minimum_should_match": 1,
      "should": [
        {
          "match": {
            "code": "a"
          }
        },
        {
          "bool": {
            "must_not": [
              {
                "exists": {
                  "field": "code"
                }
              }
            ]
          }
        }
      ]
    }
  }
}
2021-11-18 21:25:31

Спасибо, это работает! ах, я был так близко, но все же так далеко с моим первоначальным запросом
Test1 Test2

Потрясающе, рад, что все получилось!!
Val

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Популярное в этой категории

Популярные вопросы в этой категории