Ho configurato la mia implementazione Elastic Search per sfaccettare i risultati con un id nella mappatura e quando visualizzo tale facet all'utente devo essere in grado di mostrare il nome leggibile dall'uomo che lo rappresenta. I dati di cui ho bisogno sono tutti presenti nella mappatura, ma non sono sicuro di come posso restituirlo come parte del facet. Sicuramente è possibile?ElasticSearch dati facet aggiuntivi
Dato il seguente esempio, mi piacerebbe la sfaccettatura di darmi un modo per correlare la thingId
a thingName
(o qualsiasi altro thing
proprietà che potrebbe essere necessario):
Mapping
{
thingId,
thingName
}
Facet Query
{
"facets":{
"things":{ "terms":{ "field":"thingId" } }
}
}
.515.053.691,36321 milioni
Risultato
{
"hits":{
"total":3,
"max_score":1.0,
"hits":[
...
]
},
"facets":{
"things":{
"_type":"terms",
"missing":0,
"total":3,
"other":0,
"terms":[
{
"term":"5",
"count":1
},
{
"term":"4",
"count":1
},
{
"term":"2",
"count":1
}
]
}
}
}
Modifica
This answer riguardo Solr suggerisce che mi aspetto entrambe le proprietà (thingName
e thingId
) e poi basta un ciclo su entrambi i set di risultati sfaccettatura, partendo dal presupposto che l'ordine degli elementi sarebbe essere lo stesso. Non so quanto sarebbe affidabile, ma è un'opzione.
Edit 2
This answer suggerisce che non è possibile fare ciò che voglio, senza che unisce i due campi in un singolo valore e sfaccettatura su quella: thingId|thingName
. Non ideale
Edit 3
This answer suggerisce combinando i valori insieme in un singolo campo e sfaccettatura su di essa (come sopra), ma utilizza uno script termini per realizzare la combinazione, non necessitando pertanto mi indicizzare combinata forma dei valori. Ancora non perfetto, ma sembra essere l'opzione meno schifosa.
combinazione '' thingId' e thingName' in un'unica stringa e dividerlo a il livello dell'applicazione non è fuori discussione, ma spero davvero che ci sia una soluzione migliore. –
Penso che devi considerare se hai davvero bisogno di usare l'Id sulla faccetta. Perché non usi il thingName? Ci hai pensato? –
L'uso di 'thingName' è un'opzione, ma è meno ideale perché non posso garantire che' thingName' sia univoco. –