/ /用語集から用語集への移行 - elasticsearch

用語ファセットから用語集への移行 - elasticsearch

私は言葉の面をマイグレーションする必要があります

{
"facets" : {
"facet_name" : {
"terms" : {
"field" : "location",
"script" : "return doc["location"].value == "UA""
}
}
}
}

用語集合へ

{
"aggs" : {
"agg_name" : {
"terms" : {
"field" : "location",
"script" : "return doc["location"].value == "UA""
}
}
}
}

ファセットは弾力性に優れています(1.1.2と1.5.2でテストしました)

しかし、集合体は例外をスローします org.elasticsearch.script.groovy.GroovyScriptExecutionException:ArrayIndexOutOfBoundsException [-1]

問題の説明によると https://github.com/elastic/elasticsearch/issues/11728 明示的な "フィールド"が見つかった場合、集計によって "値"スクリプトが使用されるため、このような動作が発生します。

ファセットスクリプトは伝統的です。

このスクリプトの "価値"の性質を無効にし、それがファセットのように機能するようにするには?

前もって感謝します!


PS:フィルタリング(インクルード/除外)は使用できません。除外ルールは、ファセットと同様にスクリプトで宣言する必要があります。

回答:

回答№1は0

私はスクリプトを修正し、 "field"をaggから削除することで回避策を見つけました:

{
"aggs" : {
"agg_name" : {
"terms" : {
"script" : "if (_source.location == "UA") {return _source.location} else {return null}"
}
}
}
}