Sto usando ElasticSearch e mi sto chiedendo se posso usare la sfaccettatura per recuperare alcune statistiche sui miei risultati, in particolare, le persone più citate nei miei risultati. Ho già un campo che contiene quell'informazione. Ma in questo momento, i miei risultati di sfaccettatura rompono i dati in quel campo per termine quando vorrei raggrupparlo in più parole.Ottenere le faccette ElasticSearch per il trattamento di contenuto di più campi come termine atomico
Ie: se l'utente cerca John, vorrei ottenere dati come
{
[...]
"facets" : {
"topPeople" : {
"_type" : "terms",
"missing" : 0,
"total" : 1739884,
"other" : 1705319,
"terms" : [ {
"term" : "John Smith",
"count" : 13954
}, {
"term" : "John Snow",
"count" : 1432
}, {
"term" : "John Baird",
"count" : 770
}]
}
}
Invece, elasticsearch rompe i risultati per durata e restituisce qualcosa di simile:
{
[...]
"facets" : {
"topPeople" : {
"_type" : "terms",
"missing" : 0,
"total" : 1739884,
"other" : 1705319,
"terms" : [ {
"term" : "John",
"count" : 1739884
}, {
"term" : "Smith",
"count" : 13954
}, {
"term" : "Snow",
"count" : 1432
}]
}
}
I leggere da qualche parte che se si imposta l'indice per non essere analizzato, ElasticSearch dovrebbe restituire la stringa completa di parole. Tuttavia, voglio comunque che l'utente sia in grado di effettuare ricerche sul campo. Vorrei evitare di duplicare il campo per avere uno non analizzato. C'è un modo per ottenere raggruppamenti per campo con ElasticSearch?
Attualmente sto usando la seguente query sfaccettatura:
{
"query" : {
[...]
},
"facets" : {
"topPeople" : {
"terms" : {
"field" : "people",
"size" : 3
}
}
}
}
Ho usato molti campi "not_analyzed" – Gizzmo
ora questo viene fatto usando il parametro fields. Essenzialmente qualsiasi tipo di campo principale (escluso oggetto e nidificato) ora accetta un parametro di campo. [per riferimento] (https://www.elastic.co/guide/en/elasticsearch/reference/1.6/_multi_fields.html) – gigaDIE