python - 使用python比较elasticsearch中的created_time和updated_time
问题描述
我试过这个查询:
body = {
"query": {
"bool": {
"must_not": [{
"match": {
"script": "doc['updated_time'].value == doc['created_time'].value"
}
}]
}
}
}
我的索引文档是:
"hits" : [
{
"_index" : "cam_canvas_update",
"_type" : "_doc",
"_id" : "101",
"_score" : 1.0,
"_source" : {
"created_time" : "2021-08-11T13:44:13.282406282Z",
"updated_time" : "2021-08-11T13:44:13.285397500Z",
"engagement" : "Ford",
"tag_set_2" : "Renew",
"tag_set_3" : "Disputed",
"instance_numbers" : 1,
"canvas_name" : "First",
"recordid" : "ford1",
"pf" : "C6000",
"tag_set_1" : "Sally",
"ldos_date" : "7/7/2018",
"architecture" : "webex"
}
]
我想比较所有文档的 created_time 和更新时间,因为输出只需要更新的文档。只想在弹性搜索中使用更新的文档编写 csv。
解决方案
您需要在查询中使用filter
和script
,如下所示:
{
"query": {
"bool": {
"filter": [{
"script": {
"script": "doc['updated_time'].value != doc['created_time'].value"
}
}]
}
}
}
如果您不想比较毫秒,您可以使用此脚本而不是以前的版本:
{
"query": {
"bool": {
"filter": [
{
"script": {
"script": {
"inline": "doc['updated_time'].value.getMillis()/1000 != doc['created_time'].value.getMillis()/1000",
"lang": "painless"
}
}
}
]
}
}
}
如果您对此查询有任何问题,请告诉我。
推荐阅读
- java - 每个表问题的 SQLite 助手类
- c# - 为什么标签只改变了一次
- python - 如何通过 Selenium 和 Python 以无头模式启动 Chrome Canary
- sql-server - 列中的最大日期
- spring-data-jpa - java.lang.IllegalArgumentException:无法解析值“${crossOrigin}”中的占位符“crossOrigin”
- android - 无法让 Epson EPOS 打印机监听器工作以监控打印机的状态
- python - PyDictionary 无法连接到 wordnet 网站
- sql - Apache Ignite - 在 SQL Select 的情况下,Apache Ignite 返回结果是否有任何顺序?
- r - 如何根据列名对包含 R 中多个列表的列表进行子集化,并合并到单个列表/数据框中?
- sql-server - SQL Server 是否计算后来丢弃的结果?