une base de données Étant donné contient une liste de personnes, où ils vivent, et leur richesse/revenu/niveau d'impôt, j'ai donné mon ElasticSearch 5.6.2 cette mise en correspondance:Comment trier les agrégations où les clés ont des caractères internationaux?
mappings => {
person => {
properties => {
name => {
type => 'text',
fields => {
raw => {
type => 'keyword',
},
},
},
county => {
type => 'text',
fields => {
raw => {
type => 'keyword',
},
},
},
community_name => {
type => 'text',
fields => {
raw => {
type => 'keyword',
},
},
},
wealth => {
type => 'long',
},
income => {
type => 'long',
},
tax => {
type => 'long',
},
},
},
},
Un comté peut avoir plusieurs communautés , et je veux faire une agrégation qui donne un aperçu de la richesse/revenu/taxe moyenne pour chacun des comtés et pour chaque communauté de chaque comté.
Cela semble fonctionner:
aggs => {
counties => {
terms => {
field => 'county.raw',
size => 100,
order => { _term => 'asc' },
},
aggs => {
communities => {
terms => {
field => 'community_name.raw',
size => 1_000,
order => { _term => 'asc' },
},
aggs => {
avg_wealth => {
avg => {
field => 'wealth',
},
},
avg_income => {
avg => {
field => 'income',
},
},
avg_tax => {
avg => {
field => 'tax',
},
},
},
},
avg_wealth => {
avg => {
field => 'wealth',
},
},
avg_income => {
avg => {
field => 'income',
},
},
avg_tax => {
avg => {
field => 'tax',
},
},
},
},
},
Cependant, le « comté » et « nom_communauté » ne sont pas triés correctement parce que certains d'entre eux ont des caractères norvégiens en eux, ce qui signifie que les sortes ES « Ål » avant " Øvre Eiker ", ce qui est faux.
Comment puis-je obtenir un tri norvégien correct?
EDIT: J'ai essayé de changer le champ "COMMUNITY_NAME" utiliser "icu_collation_keyword" au lieu de "mot-clé":
community_name => {
type => 'text',
fields => {
raw => {
type => 'icu_collation_keyword',
index => 'false',
language => 'nb',
},
},
},
Mais il en résulte une sortie médiocre:
Akershus - 276855 - 229202 - 80131
ᦥ免⡠႐ - 314430 - 243684 - 87105
↘卑◥猔᠈〇㠖 - 202339 - 225665 - 78186
⚞乀⃠᷀ - 306985 - 237405 - 83186
⦘卓敫တ倎瀤 - 218060 - 218407 - 75602
⸳䄓†怜〨 - 271174 - 216843 - 75257
Vous devriez essayer le champ [Mot-clé de classement de l'ICU] (https://www.elastic.co/guide/en/elasticsearch/plugins/5.6/analysis-icu-collation-keyword-field.html) – Val
Ne pas dire que c'est la bonne solution, mais avez-vous envisagé d'utiliser ce filtre pour tenter de simplifier le tri? https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-asciifolding-tokenfilter.html – Miek