elasticsearch - 根据条件添加字段和值
问题描述
我试图根据现有索引的条件添加字段和值。上下文:1 000 000“行”和一个索引。
执行此操作的最有效方法是什么:
If field_a = 1 and (field_b > 0 or field_c > 0 or field_d > 0)
then
add new field field_e with value = 1
else
add new field field_e with value = 0
解决方案
这绝对可以通过查询 API 更新来实现:
POST index/_update_by_query
{
"query": {
"bool": {
"filter": [
{"exists": {"field": "field_a"}},
{"exists": {"field": "field_b"}},
{"exists": {"field": "field_c"}},
{"exists": {"field": "field_d"}}
]
}
},
"script": {
"source": "ctx._source.field_e = (ctx._source.field_a == 1 && (ctx._source.field_b > 0 || ctx._source.field_c > 0 || ctx._source.field_d > 0)) ? 1 : 0"
}
}
推荐阅读
- javascript - 基于父级在 iframe 中渲染动态内容
- python - 如何使用 OpenCV 模板匹配在任何光照条件下查找图像?
- javascript - 如何将 onclick 嵌入到另一个函数中
- aiml - 如何在 AIML 中使用 make srai 来处理这两种情况?
- reactjs - 如何在本机反应中制作“数字”组件
- c# - 检索数据上的“对象引用未设置为对象的实例”
- angular - 在角度cli中的http.get()方法中从服务器检索数据时,将数据映射到另一个类中的自定义对象(模型)?
- gatsby - 盖茨比:通过扩展阴影组件时循环
- python-2.7 - python2.7 保存控制台登录文件
- java - android studio中的运行时权限