【发布时间】:2019-07-10 12:59:39
【问题描述】:
弹性搜索:v7.2
应用:Laravel v5.7
这是我的 Elasticsearch 系列的延续,question。
由于从 MySql 迁移到 Elasticsearch,我们以前的数据库表需要从其他表生成 JOINED 结果。当我们将数据库表转换为 Elasticsearcherch 索引时,我们将应该是 JOINED 的结果转换为索引中的 NESTED 对象
我们现在能够从nested 对象中获取具有正确参数的特定文档,例如:在web 索引中查找具有csr 字段的文档,该字段具有csr.csr_story_value 或3
现在,我们的困境是,我们应该对这些文档进行排序,比方说,我能够从3 到4 获取范围为csr.csr_story_value 的文档,但需要相应地对它们进行SORT以desc 和asc 的方式。
这是我的代码:
$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" => $parseParams['client_media_xref---kgp_id']
]
],
[
"range" => [
"csr.csr_story_value" => [
"gte" => (int)$parseParams['cmx_story_rank---csr_story_rank'],
"lt" => (int)($parseParams['cmx_story_rank---csr_story_rank'])
]
]
]
]
]
],
]
]
];
$params['body']['sort'] = $temp;
问题是,文件没有被整理出来。我是否遗漏了 Elasticsearch 嵌套对象排序的某些内容或任何查询?
样本输出(仍未排序):
【问题讨论】:
标签: elasticsearch