【问题标题】:Elastic Search perform calculation on one documentElastic Search 对一个文档执行计算
【发布时间】:2021-03-25 17:18:05
【问题描述】:

我需要对特定文档的字段执行计算。例如,我需要将 50 与价格相加。我尝试了以下选项:

curl -X POST "localhost:9200/ex1/ex2/WPatZHgBEd7rI-6ZwNFC/_update?pretty" -H 'Content-Type: application/json' -d'{"doc": {"price": +50}}'

在这种情况下,它将价格设置为 50。如果我尝试这样做:

curl -X POST "localhost:9200/ex1/ex2/WPatZHgBEd7rI-6ZwNFC/_update?pretty" -H 'Content-Type: application/json' -d'{"doc": {"price": "price"+50}}'

它给出了以下错误:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "json_parse_exception",
        "reason" : "Unexpected character ('-' (code 45)): was expecting comma to separate Object entries\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@4c7cecda; line: 1, column: 29]"
      }
    ],
    "type" : "json_parse_exception",
    "reason" : "Unexpected character ('-' (code 45)): was expecting comma to separate Object entries\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@4c7cecda; line: 1, column: 29]"
  },
  "status" : 500
}

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    使用脚本increment a doc's attribute:

    POST localhost:9200/ex1/ex2/WPatZHgBEd7rI-6ZwNFC/_update?pretty
    {
      "script": {
        "source": "ctx._source.price += params.increment_by",
        "params": {
          "increment_by": 50
        }
      }
    }
    

    使用卷曲:

    curl -XPOST "http://localhost:9200/localhost:9200/ex1/ex2/WPatZHgBEd7rI-6ZwNFC/_update?pretty" -H 'Content-Type: application/json' -d'{  "script": {    "source": "ctx._source.price += params.increment_by",    "params": {      "increment_by": 50    }  }}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多