Mit ElasticSearch NEST habe ich Probleme, erwartete Ergebnisse aus meinen Abfragen zu erhalten. Mein Index/Typ Layout ist wie folgt:ElasticSearch NEST Mehrere Typen und alle Felder suchen
- Theater (Index)
- Ereignis (Typen)
- Theater
- Förderung
- generic Inhalt
Jeder dieser Typen hat seine eigenen Felder und Ich verwende NESTs Index() -Methode, um die Daten zu indizieren. Ich kann bestätigen, dass es durch korrekt indiziert ist wird:
- bei der Suche
http://localhost:9200/theatres/_mapping
- Mit dem Head Plugin Daten
als Referenz zu sehen, hier ist meine Client-Konfiguration:
// TODO: Put settings in config
var node = new Uri("http://localhost:9200");
var connSettings = new ConnectionSettings(node);
connSettings.SetDefaultIndex("theatres");
connSettings.ThrowOnElasticsearchServerExceptions();
var client = new ElasticClient(connSettings);
Die Abfrage
Jetzt, für die Abfrage, möchte ich alle Typen und alle Felder innerhalb des Index suchen. Mit Hilfe der Kopf-Plugin, ich bin in der Lage, die Abfrage zu generieren und die erwarteten Ergebnisse erhalten:
diese Abfrage verwenden, die es erzeugt, habe ich versucht, die folgende NEST query:
var query = "waukesha"; // This would be passed in
var resp = client.Search<dynamic>(s => s
.From(0)
.Take(10)
.Query(qry => qry
.Bool(b => b
.Must(m => m
.QueryString(qs => qs
.DefaultField("_all")
.Query(query))))));
aber das gibt mir ein anderes Ergebnis. Macht NEST etwas hinter den Kulissen, das mir nicht bewusst ist? Oder wird das nicht unterstützt?
Ich würde vorschlagen, .Size (10) anstelle von .Nehmen (20) nur zu Entfernen Sie das als eine Variable für Fehler, obwohl die Funktionalität identisch sein sollte. Auch ich glaube, dass Sie .DefaultField entfernen können und alle Felder gesucht werden. Könntest du das versuchen? Ich bin neugierig –
@ DanielHoffmann-Mitscherling Ich aktualisierte dies und immer noch 0 Ergebnisse, wenn ich 1. bekommen sollte. –
So komisch! Können Sie DefaultField ("_ all") hinzufügen und auch .AllTypes() hinzufügen? NEST manuell zu zwingen, eine Abfrage mit allen Typen zu erstellen, könnte uns mehr Informationen geben. –