Utilizzo di ElasticSearch NEST, ho problemi a ottenere risultati attesi dalle mie query. Il mio layout index/tipo è la seguente:Ricerca NEST ElasticSearch Tipi multipli e tutti i campi
- teatri (indice)
- eventi (tipo)
- teatro
- promozione
- contenuto generico
Ognuno di questi tipi ha i propri campi, e Sto usando il metodo Index() di NEST per indicizzare i dati. Posso verificare che è in fase di indicizzato correttamente:
- Guardando
http://localhost:9200/theatres/_mapping
- Utilizzando il plugin Head per visualizzare i dati
Per riferimento, ecco la mia configurazione del client:
// 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);
The Query
Ora, per la query, desidero cercare tutti i tipi e tutti i campi all'interno dell'indice. Utilizzando il plugin capo, io sono in grado di generare la query e ottenere i risultati attesi:
Utilizzando tale query che ha generato, ho provato la seguente query NEST:
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))))));
Tuttavia, questo mi dà una risultato diverso. NEST sta facendo qualcosa dietro le quinte di cui non sono a conoscenza? O questo non è supportato?
Vorrei suggerire .Size (10) al posto di .Prendere (20) solo per rimuovilo come variabile per errore, sebbene la funzionalità dovrebbe essere la stessa. Inoltre, credo che sia possibile rimuovere .DefaultField e tutti i campi verranno cercati. Potresti provare? Sono curioso di questo –
@ DanielHoffmann-Mitscherling ho aggiornato questo e ancora ottengo 0 risultati, quando dovrei ottenere 1. –
Così strano! Potresti aggiungere di nuovo DefaultField ("_ all") e anche aggiungere. AllTypes()? Costringere manualmente NEST a creare una query con tutti i tipi potrebbe darci ulteriori informazioni –