我有一个elasticsearch索引,我想获得一个自定义的排序数据。假设这是我的记录的结构,我有一个名为field3
的字段,该字段由一个哈希数组组成,我希望查询将这些哈希作为单独的记录获取,并根据字段中的任何字段升序或降序排序散列。
示例,假设我要根据b
的值处理这2条记录,我想获得5个field3
散列的匹配项,这些匹配项根据b
的值升序排列
{
"_index": "my_index",
"_id": "1",
"source": {
"field1": "value1",
"field2": "value2",
"field3": [
{
"a": "11",
"b": "2",
"c": "12"
},
{
"a": "13",
"b": "15",
"c": "16"
},
{
"a": "11",
"b": "11",
}
]
}
},
{
"_index": "my_index",
"_id": "2",
"source": {
"field1": "value1",
"field2": "value2",
"field3": [
{
"a": "1",
"c": "2"
},
{
"a": "3",
"b": "5",
"c": "6"
},
{
"a": "1",
"b": "1",
"c": "2"
}
]
}
}
返回的匹配应为:
"hits": {
"total": "5",
"hits": [
{
"index_id": "2",
"a": "1",
"b": "1",
"c": "2"
},
{
"index_id": "1",
"a": "11",
"b": "2",
"c": "12"
},
{
"index_id": "2",
"a": "3",
"b": "5",
"c": "6"
},
{
"index_id": "1",
"a": "11",
"b": "11",
},
{
"index_id": "1",
"a": "13",
"b": "15",
"c": "16"
}
]
}
我可以规范化数据并使用field3
的值创建另一个索引,但这将需要在代码库中进行很多更改。有执行这种查询的方法吗?