Sto creando un motore di ricerca di prodotto con Elastic Search nella mia applicazione .NET, utilizzando il client NEST, e c'è una cosa con cui ho problemi. Ottenere un insieme distinto di valori.Ottenere valori distinti utilizzando il client NAST ElasticSearch
Sono alla ricerca di prodotti, che ci sono molte migliaia, ma ovviamente posso solo restituire 10 o 20 alla volta per l'utente. E per questo cercapersone funziona bene. Ma oltre a questo risultato primario, voglio mostrare ai miei utenti un elenco di marchi che si trovano all'interno della ricerca completa, per presentarli per il filtraggio.
Ho letto a tale proposito che dovrei usare i termini Aggregazioni per questo. Ma non potrei ottenere niente di meglio di questo. E questo ancora non mi dà veramente quello che voglio, perché divide valori come "20th Century Fox" in 3 valori separati.
var brandResults = client.Search<Product>(s => s
.Query(query)
.Aggregations(a => a.Terms("my_terms_agg", t => t.Field(p => p.BrandName).Size(250))
)
);
var agg = brandResult.Aggs.Terms("my_terms_agg");
È questo l'approccio giusto? O dovrebbe usare qualcosa di completamente diverso? E come posso ottenere i valori corretti e completi? (Non diviso dallo spazio .. ma immagino che sia quello che ottieni quando chiedi una lista di "Termini" ??)
Quello che sto cercando è quello che otterresti se lo facessi in MS SQL
SELECT DISTINCT BrandName FROM [Table To Search] WHERE [Where clause without paging]
Ho appena iniziato con questo una settimana fa. Quindi sto lavorando alla versione 1.4.4 più recente. – Bart
Cosa intendi cambiando il BrandName. Aggiornamento dello schema del database? O modificalo in linea, nella mia domanda? – Bart
Modificare l'indicizzatore ES (database). – jhilden