当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch java api以json为值更新api

林蕴藉
2023-03-14

curl-xpost'localhost:9200/test/type1/1/_update'-d'{“script”:“ctx._source.name_of_new_field=\”value_of_new_field\“”}“

这是elasticsearch参考站点使用新字段更新现有文档的一个示例。https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html

我想用“新文件”更新现有文档,但用json作为“新字段的值”,而不是作为“新文件的值”的单个字符串。就像下面那样。

curl-xpost'localhost:9200/test/type1/1/_update'-d'{“script”:“ctx._source.test={\”newtest\“:\”hello\“}”}‘

返回如下所示的错误。

{
  "error": {
    "root_cause": [
      {
        "type": "remote_transport_exception",
        "reason": "[Ravage 2099][127.0.0.1:9300][indices:data/write/update[s]]"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "failed to execute script",
    "caused_by": {
      "type": "script_exception",
      "reason": "Failed to compile inline script [ctx._source.test2 = {\"test2\":\"hihi\"}] using lang [groovy]",
      "caused_by": {
        "type": "script_exception",
        "reason": "failed to compile groovy script",
        "caused_by": {
          "type": "multiple_compilation_errors_exception",
          "reason": "startup failed:\n4e487d5bc8afde27adf29b77e8427f5da1534843: 1: expecting '}', found ':' @ line 1, column 29.\n   ctx._source.test2 = {\"test2\":\"hihi\"}\n                               ^\n\n1 error\n"
        }
      }
    }
  },
  "status": 400
}

甚至可以用“JSON值”更新现有文档吗?还是每个更新请求都应该有单个字符串值?

共有1个答案

蒋华美
2023-03-14

您可以尝试对部分文档进行更新:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#_updates_with_a_partial_document

比如:

curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"doc" : {
    "test" : {
         "newTest" : "hello"
        }
    }
}'
 类似资料:
  • 问题内容: 我有以下查询,仅在它们为空时才在其中更新值。 是否可以将所有这些都放入单个查询中? 和 问题答案: 您可以尝试: 尽管它可能会触发更新触发器,即使对于实际上未更改的行也是如此。

  • 我是java新手,所以请不要后悔java中的对象和东西正在传递引用的值,但下面是我试图传递对象的代码。当我通过传递到函数中更新值时,a的值没有改变。发生了什么请帮助我。。。

  • 当我将日期格式为MMM DD,YYYY的表中的列更新为新格式时。格式不会更改为所需的格式,即YYYY-MM-DD HH:MM:SS。即使更新不同的值,如。日期将更改,但格式将保持不变。 当前值&列的格式类型为varchar 杜埃达特 2020-06-27 00:0000.000 Update语句

  • 问题内容: 如何更新字段以为现有价值增加价值? 例如我有 表名: 有没有一种方法可以简单地为信用增加价值? 喜欢 我想将7加到4,以便credit = 11,其中id =‘1’ ,该怎么做? 问题答案:

  • 我对使用java从web获取java非常陌生,我遇到了一个问题。我正在解析一个网站(Flightradar24.com)中的JSON,并将JSON中的数据保存到CSV文件中。然而,JSON中的值会不时更新,所以每当我再次尝试解析JSON文件时,更新的值都不会保存。例如,如果我有此条目 我想得到更新,这将是: 然而,我唯一能做的就是一遍又一遍地获取相同的条目,而不更新值。我正在使用线程。sleep(

  • Inshort:我试图找到一些api,通过将第一个参数作为jsonString,第二个参数作为JSONPath,第三个参数将是该参数的新值来改变值。但是,我发现的只是这个。。https://code.google.com/p/json-path/ 这个api允许我在JSON字符串中查找任何值。但是,我没有找到简单的方法来更新任何键的值。例如,这里有一本书。json。 我可以通过这样做访问自行车的颜