elasticsearch 根据条件添加字段和值,elasticsearch,elasticsearch" /> elasticsearch 根据条件添加字段和值,elasticsearch,elasticsearch" />

elasticsearch 根据条件添加字段和值

elasticsearch 根据条件添加字段和值,elasticsearch,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 这完全可以通过以下方式实现:

我试图根据现有索引的条件添加字段和值。 上下文: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 

这完全可以通过以下方式实现:


这完全可以通过以下方式实现:


谢谢@Val。不幸的是,它不起作用
POST my index/\u update\u by_query{“query”:{“match_all”:{},“script”:{“source”:“ctx._source.in_cr=(ctx._source.indexable_bool==true&(ctx.[csv_g-desktop']>0 | | ctx.(csv_g-mobile']>0))?1:0}。
Bug报告包含:
“type”:“脚本异常”,“原因”:“编译错误”,“脚本堆栈”:[“…==true&&&(ctx.[源代码],“^----这里”。
哦,我知道为什么:在
ctx.[源代码]。[源代码]csv\u g-mobile']
您需要删除第二个点,像这样
ctx.[源代码]csv\u-mobile'.
谢谢:)抱歉,我发现StackOverflow的格式设置不起作用;(刚刚编辑了完整报告的主要问题您只替换了一些出现的内容,但不完全感谢@Val。不幸的是,它不起作用。
POST my index/\u update\u by\u query{“query”:{“match\u all”:{},“script”:{“source”:“ctx.\u source.in\u cr=(ctx._source.indexable_bool==true&(ctx._source.[csv_g-desktop']>0 | ctx.[u csv_g-mobile']>0))?1:0“}。
错误报告包含:
“类型”:“脚本异常”,“原因”:“编译错误”,“脚本堆栈”:[”..==true&(ctx.\u source^----这里“
哦,我知道为什么:在
ctx中。_source.['csv\u g-mobile']
您需要删除第二个点,就像这样
ctx。_source['csv\u g-mobile']
谢谢:)对不起,我发现StackOverflow的格式设置不起作用;(刚刚编辑了完整报告的主要问题您只替换了部分内容,而不是全部内容。)
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"
  }
}