J'essaye actuellement de migrer une application basée sur solr vers elasticsearch.
J'ai cette question lucene
((
name:(+foo +bar)
OR info:(+foo +bar)
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)
Pour autant que je sache, il s'agit d'une combinaison de clauses MUST combinées avec booléen OR:
"Obtenez tous les documents contenant (foo AND bar in name) OR (foo AND bar in info). Après cela, filtrez les résultats par état de la condition = 1 et améliorez les documents qui ont une image."
J'ai essayé d'utiliser une requête booléenne avec MUST mais je n'arrive pas à obtenir boolean OR dans les clauses must. Voici ce que j'ai:
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
}
}
}
]
}
}
}
Comme vous pouvez le voir, les conditions MUST pour "info" sont manquantes.
Quelqu'un a-t-il une solution?
Merci beaucoup.
** METTRE À JOUR **
J'ai mis à jour ma requête elasticsearch et supprimé ce score de fonction. Mon problème de base existe toujours.