Ich muss nach einem Schlüsselwort für mehrere Felder für dieselbe Abfragezeichenfolge suchen.Match und Match_phrase für mehrere Felder mit derselben Abfragezeichenfolge - Elastische Suche (Nest)
"bool": {
"should": [
{
"match": {
"ABC": "Apple"
}
},
{
"match": {
"XYZ": "Apple"
}
}
]
}
Wenn ich die Abfrage DSL schrieb, hat es sich als Multimatch Abfrage übersetzt worden (nicht sicher, ob der obige Code und DSL gleich sind)
.Bool(b => b
.Should(sh => sh
.MultiMatch(c => c
.Fields(f => f.Field(p => p.ABC).Field("XYZ"))
.Query(keyz)))))
Ebenso möchte ich einen DSL-Abfrage schreiben, aber ich möchte match_phrase ausführen. Kann mir jemand dabei helfen?
TIA
Hallo Russ. Danke für die Hilfe. Darf ich wissen, warum ".DefaultFieldNameInferrer (p => p)" verwendet wird und wie hilft es? Und ich versuche tatsächlich, zuerst eine Übereinstimmungsphrase auszuführen, und wenn die Treffer 0 von der Match_phrase-Abfrage sind, dann plane ich, Match-Abfrage auszuführen. – ASN
Werfen Sie einen Blick auf die Dokumentation für '.DefaultFieldNameInferrer()' - https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/field-inference.html#camel-casing. Sie können steuern, wie Feldnamen aus Ihren POCO-Eigenschaftsnamen abgeleitet werden. Sie könnten eine 'match_phrase' und eine' match' gleichzeitig mit einer 'bool' Abfrage ausführen –
Danke Russ. Aber ich möchte match_phrase für beide Felder zuerst ausführen, und wenn die Ergebnisse 0 sind, dann möchte ich eine Übereinstimmungsabfrage für diese Felder erneut ausführen. Ich plane nicht, eine Übereinstimmungsphrase auf einem Feld und eine Übereinstimmung auf einem anderen Feld zu machen. Und ist meine Multimatch-DSL-Abfrage falsch? – ASN