Ich mache full text search
mit ElasticSearch. Ich verwende Query String Query. Ich mache Suche mit Multi Field Funktion.ElasticSearch: Volltextsuche mit query_string mit mehreren Feldern
Meine Abfrage sieht aus wie folgt:
{
"query": {
"query_string": {
"fields": [
"field1^5",
"field2^5",
"field3^1",
"field4^1",
...................
...................
],
"query": "....",
"default_operator": "OR",
"analyzer": "standard"
}
}
}
ich mehr als 30 fields
in meiner Sammlung haben. Für meine Anforderung muss ich sicherstellen, dass zuerst fieldA
, fieldB
gesucht werden muss. Daher haben diese Felder higher priority
. Andere Felder haben alle low and equal priority
.
Also, gibt es einen Weg, wo ich nicht specify all the field names in the query
haben muss. Ich möchte nur diejenigen Felder angeben, die eine höhere Priorität haben, d. H. fieldA
, fieldB
. Die Suche sollte jedoch in allen Feldern basierend auf der Prioritätsreihenfolge durchgeführt werden.
Wie konnte ich das erreichen?
Ihre Frage nicht verstanden. @oblivion –
@DivyeshGausvami Kurz gesagt, ich möchte Volltextsuche auf mehreren Feldern durchführen. Unter diesen Feldern haben zwei von ihnen eine sehr hohe Priorität, und sie müssen zuerst abgeglichen werden. In der Abfrage möchte ich diese zwei Felder nur angeben, indem ich ihnen einen höheren Boost-Wert gebe. Wenn diese beiden Felder nicht mit der Abfrage übereinstimmen, müssen nur andere Felder abgeglichen werden. Also, muss ich immer alle Felder in der Abfrage angeben? Gibt es eine Möglichkeit, wo ich nicht alle Felder niedriger Priorität in der Abfrage auflisten muss? – oblivion
'{ "Abfrage": { "multi_match": { "Abfrage": "Suche string", "Felder": [ "Feld1", "Feld2", ..., "fieldN"] } } } ' Dies könnte für Sie hilfreich sein? habe ich recht ? –