Melhor maneira de verificar se existe um campo num documento de pesquisa elástica
pode ser uma pergunta muito estúpida, Qual é a melhor maneira de verificar se um campo de um documento em elasticsearch existe? Não encontro nada na documentação.
por exemplo, se este documento não tem o campo/chave "Preço" Eu não quero retornar no resultado.
O que posso fazer? Obrigado.{ "actualizado": "2015/09/17 11:27:27", "nome": "sombra dos olhos", "formato": "1,5 g / 0,05 oz", }
5 answers
Podes usar o exists
filtro combinado com um bool/must
Filtro Assim:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"exists": {
"field": "price"
}
},
... <-- your other constraints, if any
]
}
}
}
}
}
Você também pode usar o missing
filtro combinado com um bool/must_not
filtro:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must_not": [
{
"missing": {
"field": "price"
}
}
]
}
}
}
}
}
O filtro exists
foi substituído por exists
consulta da ES 2.1, embora o seu funcionamento seja o mesmo. Além disso, o filtro em falta é removido e a consulta em falta é desactualizada.
Para obter todos os documentos que têm um campo em particular,
"bool": {
"must": {
"exists": {
"field": "my_field"
}
}
}
E para obter todos os documentos que não tenham um campo em particular, use-o com must_not
assim
"bool": {
"must_not": {
"exists": {
"field": "my_field"
}
}
}
Documentos elásticos: https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-missing-query.html
Pode usar o filtro existe:
{
"query": {
"filtered": {
"filter": {
"exists": {
"field": "status"
}
},
"query": {
"match_all": {}
}
}
}
}
Relativamente a:, Alain
Podes fazer directamente
{
"query": {
"exists": {
"field": "fieldName"
}
}
}
Se também quiseres adicionar um fósforo, podes ir para
{
"query": {
"bool": {
"must": [{
"match": {
"fieldName": "value"
}
},
{
"exists": {
"field": "fieldName"
}
}]
}
}
}
Https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html
GET /_search
{
"query": {
"exists" : { "field" : "price" }
}
}
Fonte: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html