Ich versuche derzeit, eine solr-basierte Anwendung auf elasticsearch zu migrieren.
Ich habe diese Lucene-Abfrage
((
name:(+foo +bar)
OR info:(+foo +bar)
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)
Soweit ich weiß, handelt es sich um eine Kombination von MUST-Klauseln in Kombination mit einem booleschen ODER:
"Holen Sie sich alle Dokumente, die (foo UND Balken im Namen) ODER (foo UND Balken im Info) enthalten. Danach werden die Filter nach Bedingungsstatus = 1 gefiltert und Dokumente mit einem Bild angehoben."
Ich habe versucht, eine Bool-Abfrage mit MUST zu verwenden, aber ich kann kein boolesches ODER in must-Klauseln einfügen. Folgendes habe ich:
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
}
}
}
]
}
}
}
Wie Sie sehen können, fehlen MUSS-Bedingungen für "Info".
Hat jemand eine Lösung?
Ich danke dir sehr.
** UPDATE **
Ich habe meine Elasticsearch-Abfrage aktualisiert und diese Funktionsbewertung entfernt. Mein Basisproblem besteht immer noch.