Atualmente, estou tentando migrar um aplicativo baseado em solr para elasticsearch.
Eu tenho essa consulta lucene
((
name:(+foo +bar)
OR info:(+foo +bar)
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)
Tanto quanto eu entendo isso é uma combinação de cláusulas MUST combinadas com OR booleano:
"Obtenha todos os documentos que contêm (foo AND bar no nome) OR (foo AND bar no info). Depois desse filtro, resulta pelo estado de condição = 1 e aprimora os documentos que têm uma imagem."
Eu tenho tentado usar uma consulta bool com MUST, mas não consigo obter OR booleano em cláusulas must. Aqui está o que eu tenho:
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 você pode ver, as condições DEVE para "informações" estão ausentes.
Alguém tem uma solução?
Muito obrigado.
** ATUALIZAÇÃO **
Atualizei minha consulta elasticsearch e me livrei dessa pontuação de função. Meu problema básico ainda existe.