ElasticSearch "A" ou "vazio"

0

Pergunta

Eu tenho o seguinte índice índice

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

"código" pode ter os valores: ["um"], ["b"],["a","b"], ou []

Eu preciso de uma consulta para aliviar os valores com o código: "um" ou []. Alguém pode me ajudar com esta consulta, aqui está o que eu tentei até agora sem sucesso (isso aparece para dizer que "a" E "[]"; eu quero "um" OU "[]").

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

Melhor resposta

0

OU pode ser alcançado com bool/should, mas o bool/must restrição tem de ser dentro da bool/should.

Você deve tentar com essa consulta:

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

Obrigado, Isso funciona! ahh eu estava tão perto, mas tão longe, com minha consulta original
Test1 Test2

Incrível, que bom que funcionou!!
Val

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................