愚者求师之过,智者从师之长。

es filter script获取nested结构数据如何实现?

Elasticsearch | 作者 WiseLi1998 | 发布于2024年11月14日 | 阅读数:3332

1.es版本为7.4.2
2.目前需要通过一个nested字段筛选符合条件的数据
mapping简化如下:
{
"dwd_cr_supplier_business_view1_v1": {
"date_detection": false,
"properties": {
"agreement": {
"type": "nested",
"properties": {
"company_id": {
"type": "long"
},
"creator_id": {
"type": "long"
},
"dept_id": {
"type": "long"
},
"expiration_date": {
"type": "long"
},
"is_long_term": {
"type": "long"
},
"sl_company_id": {
"type": "long"
}
}
},
"supplier_code": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"supplier_name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
agreement中存储的为数组形式数据。
 
现在需要筛选出agreement中符合条件的数据计算出最大的expiration_date然后基于最大expiration_date进行筛选在日期范围内的供应商有哪些,现在问题在于使用script过滤无法使用nested字段,且还会有很多别的条件,如何进行这样的筛选?
已邀请:

duanxiaobiao - 90 后IT男

赞同来自:

1.必须要使用script吗?先聚合再过滤不行吗?
2.最大的expiration_date?是所有document中满足查询条件的nested数组里的JSON数据的最大值?还是每一个document都会有一个最大值?

要回复问题请先登录注册