如何从Elasticsearch查询定制的排序记录

时间:2019-01-30 14:59:23

标签: elasticsearch

我有一个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的值创建另一个索引,但这将需要在代码库中进行很多更改。有执行这种查询的方法吗?

0 个答案:

没有答案