ElasticSearch 5でネストされたキー値の組で検索結果をソートしようとしています。すなわち:ElasticSearch 5:ネストされたキーと値でソートすると、デフォルトでテキストフィールドでフィールドデータが無効になります。
私は次のような結果(それをシンプルに保つために擬似構造、)持っている:私は「最高値キー= 『ABC』でソートすることがしたいと思います
{
"hit1": {
"nested_objects": [
{
"Key": "abc",
"Value": 0.1
},
{
"Key": "def",
"Value": 0.3
}
]
},
"hit2": {
"nested_objects": [
{
"Key": "abc",
"Value": 0.9
},
{
"Key": "def",
"Value": 0.1
}
]
}
}
をこれは "hit2"が上に出ることを意味する。
次のように私のマッピングは次のとおりです。
{
"test_index": {
"mappings": {
"test_type": {
"properties": {
"nested_objects": {
"type": "nested",
"properties": {
"Key": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"Value": {
"type": "float"
}
}
}
}
}
}
}
}
私は次の提案に従うことを試みてきました:
Sort elastic search query based on a nested key value array
Sort nested object in Elasticsearch
を...しかし、私は一貫して、次を得ますエラー:
"Fielddata is disabled on text fields by default"
これを再現しようと、ソートの例:
{
"sort": [
{
"nested_objects.Key": {
"order": "desc",
"nested_path": "nested_objects",
"nested_filter": {
"term": { "nested_objects.Key": "abc" }
}
}
}
]
}
これを解決するためのベストプラクティスの方法は何ですか?実際に唯一のオプションであるフィールドデータ(多くのRAMを使用する)を有効にしていますか?
ありがとうTaras問題の半分(フィールド・データ・エラー)を解決します。私はまだ "abc"の値で並べ替える必要があります - '" term ":{" nested_objects.Key.keyword ":" abc "}'? – Scarabas