tutorial - La mejor manera de verificar si existe un campo en un documento de Elasticsearch
puertos elasticsearch (5)
El filtro exists
ha sido reemplazado por la consulta exists
de ES 2.1, aunque su funcionamiento es el mismo. Además, el filtro que falta se elimina y la consulta que falta queda en desuso.
Para obtener todos los documentos que tienen un campo en particular,
"bool": {
"must": {
"exists": {
"field": "my_field"
}
}
}
y para obtener todos los documentos que NO tienen un campo en particular, must_not
con must_not
como este
"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
Puede ser una pregunta muy estúpida, ¿Cuál es la mejor manera de verificar si existe un campo de un documento en elasticsearch? No encuentro nada en la documentación.
Por ejemplo, si este documento no tiene el campo / clave "precio", no quiero devolver el resultado.
{"updated": "2015/09/17 11:27:27", "name": "Eye Shadow", "format": "1.5 g / 0.05 oz",}
¿Que puedo hacer?
Gracias
Puedes hacer directamente
{
"query": {
"exists": {
"field": "fieldName"
}
}
}
Si también quieres agregar un poco de coincidencia, entonces puedes ir por
{
"query": {
"bool": {
"must": [{
"match": {
"fieldName": "value"
}
},
{
"exists": {
"field": "fieldName"
}
}]
}
}
}
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html
Puedes usar el filtro existente:
{
"query": {
"filtered": {
"filter": {
"exists": {
"field": "status"
}
},
"query": {
"match_all": {}
}
}
}
}
Saludos, Alain
Puede usar el filtro exists
combinado con un filtro bool/must
como este:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"exists": {
"field": "price"
}
},
... <-- your other constraints, if any
]
}
}
}
}
}
También puede usar el filtro missing
combinado con un filtro bool/must_not
:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must_not": [
{
"missing": {
"field": "price"
}
}
]
}
}
}
}
}
GET /_search
{
"query": {
"exists" : { "field" : "price" }
}
}
fuente: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html