Skonfigurowałem moją implementację Elastic Search, aby obliczyć wyniki według identyfikatora w odwzorowaniu, a kiedy wyświetlam ten aspekt użytkownikowi, muszę mieć możliwość wyświetlania czytelnej dla człowieka nazwy, która go reprezentuje. Dane, których potrzebuję, są obecne w mapowaniu, ale nie jestem pewien, w jaki sposób mogę je zwrócić jako część aspektu. Z pewnością jest to możliwe?ElasticSearch dodatkowe dane aspektu
Biorąc pod uwagę następujący przykład, chciałbym do aspektu dać mi jakiś sposób, aby skorelować thingId
do thingName
(lub dowolny inny thing
właściwości, które mogą być potrzebne):
mapowania
{
thingId,
thingName
}
Facet Zapytanie
{
"facets":{
"things":{ "terms":{ "field":"thingId" } }
}
}
Wynik
{
"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
}
]
}
}
}
Edit
This answer dotyczące Solr sugeruje, że FACET zarówno właściwości (thingName
i thingId
) i wtedy pętlę nad obu zestawów wyników facet, zakładając, że kolejność elementów, które być takim samym. Nie wiem, jak wiarygodne by to było, ale jest to opcja.
Edycja 2
This answer sugeruje, że nie jest możliwe, aby robić to, co chcę bez łącząc dwa pola do pojedynczej wartości i szlifowaniem na tym: thingId|thingName
. Nieidealny.
Edycja 3
This answer proponuje łączenie wartości razem do jednego pola i szlifowaniem w to (jak opisano powyżej), ale używa scenariusza użytkowania w celu uzyskania połączenia, a tym samym nie wymaga mi wskaźnika Połączone forma wartości. Nadal nie jest doskonały, ale wydaje się najmniej kłopotliwą opcją.
Łącząc 'thingId' i' thingName' w jeden ciąg i podzielenie go na warstwa aplikacji nie jest wykluczona, ale naprawdę mam nadzieję, że istnieje lepsze rozwiązanie. –
Myślę, że należy rozważyć, czy naprawdę trzeba użyć Id na aspekt. Dlaczego nie używasz thingName? Czy myślałeś o tym? –
Używanie 'thingName' jest opcją, ale jest mniej idealne, ponieważ nie mogę zagwarantować, że' thingName' będzie unikalne. –