Elasticsearch-根据嵌套对象中的值对文档进行排序

时间:2019-07-10 04:13:00

标签: elasticsearch

Elasticsearch:v7.2
应用:Laravel v5.7

这是我的Elasticsearch系列与此question的延续。

从MySql迁移到Elasticsearch的结果是,我们以前的数据库表需要从另一个表中产生JOINED个结果。当我们将数据库表转换为Elasticsearcch索引时,我们将假设为JOINED的结果转换为索引中的NESTED对象

我们现在能够从nested对象中获取具有正确参数的特定文档,例如:在web索引中使用具有{{1 }},共csr

现在,我们的难题是,我们应该对这些文档进行排序,比方说,我能够从csr.csr_story_value3的{​​{1}}范围内获取文档,但是需要分别以csr.csr_story_value3的方式4

这是我的代码:

SORT

问题是,文档没有被整理。我是否缺少某些对Elasticsearch嵌套对象排序的查询?

样本输出(仍未排序):

enter image description here

1 个答案:

答案 0 :(得分:0)

经过一系列的试验和错误,我应该刚刚删除了range查询,并添加了mode中的avg。我现在的工作查询:

$temp = 
[
    "csr.csr_story_value" => [
        'order' => $order,
        'nested' => [
            'path' => 'csr',
            'filter' => [
                "bool" => [
                    "must" => [
                        [ 
                          "match" => [ 
                            "csr.cli_id" => $parseParams['client_media_xref---cli_id']
                          ] 
                        ],
                        [
                          "match" => [
                            "csr.kgp_id" => (string)$parseParams['client_media_xref---kgp_id']
                          ]
                        ]
                    ]
                ]
            ]
        ],
        "mode" => "avg"
    ]
];