Actualmente estoy tratando de migrar una aplicación basada en solr a elasticsearch.
Tengo esta consulta lucene
((
name:(+foo +bar)
OR info:(+foo +bar)
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)
Por lo que entiendo, esta es una combinación de cláusulas DEBE combinadas con OR booleano:
"Obtenga todos los documentos que contengan (foo AND bar en el nombre) OR (foo AND bar en la información). Después de eso, el filtro resulta por estado de condición = 1 y aumenta los documentos que tienen una imagen".
He estado tratando de usar una consulta bool con DEBE, pero no puedo obtener OR booleana en cláusulas must. Esto es lo que tengo:
GET /test/object/_search
{
"from": 0,
"size": 20,
"sort": {
"_score": "desc"
},
"query": {
"bool": {
"must": [
{
"match": {
"name": "foo"
}
},
{
"match": {
"name": "bar"
}
}
],
"must_not": [],
"should": [
{
"match": {
"has_image": {
"query": 1,
"boost": 100
}
}
}
]
}
}
}
Como puede ver, faltan condiciones para "información".
¿Alguien tiene una solución?
Muchas gracias.
** ACTUALIZACIÓN **
He actualizado mi consulta de Elasticsearch y me he deshecho de esa puntuación de función. Mi problema base todavía existe.