elasticsearch - 如何根据匹配条件的嵌套对象的大小对弹性搜索查询进行排序?
问题描述
我尝试根据匹配条件的嵌套对象的大小(此处为具有特定状态的助推器的大小)对弹性搜索查询进行排序
这是我的映射:
{
"companies" : {
"mappings" : {
"dynamic" : "false",
"properties" : {
"authorization_level" : { "type" : "keyword" },
"boosters" : {
"type" : "nested",
"properties" : {
"id" : { "type" : "keyword" },
"status" : { "type" : "keyword" } //condition is on this specific field
}
},
/// More properties not relevant here
}
}
}
}
如果我简化我的查询以只保留排序部分,我有这个:
GET companies/_search
{
"sort": [
{ "authorization_level": { "order": "asc" } },
{ "_script":
{
"script": "params['_source']['boosters'].size()",
"order": "desc",
"type": "number"
}
}
]
}
脚本部分可以很好地按嵌套字段的大小对公司进行排序boosters
。但现在我想按具有特定状态的助推器的大小对其进行排序(例如:助推器可以有 2 个不同的状态已完成或待处理,我只想计算待处理的助推器)。
你知道如何编写脚本部分来实现这一点吗?无痛的脚本语言对我来说根本不是无痛的......
非常感谢
解决方案
推荐阅读
- python - 为函数 cv2.createBackgroundSubtractorMOG2() 设置初始背景
- reactjs - 如何在 Reach Route 组件中使用所需的道具
- php - 从数组更新实体
- r - 在 R & R Shiny 中从 SQL 查询创建下拉列表
- vue.js - 创建主 Vue 实例之前的 Vue 路由
- amcharts - amchart 4 在本地工作正常,但在部署后显示多行
- openstack - 创建 octavia 负载均衡器失败并显示“Nova 无法构建实例,原因是:提供的 key_name 无效”
- r - 基于限制的数据框中多列的频率列表
- python - 如何避免这种糟糕的 Mypy 语法?
- java - Junit 测试总是返回 false