gpt4 book ai didi

elasticsearch - 如何在Elasticsearch中使用MVEL访问/更新嵌套字段的属性

转载 作者:行者123 更新时间:2023-12-03 02:08:55 26 4
gpt4 key购买 nike

我想在Elasticsearch中向文档添加一些数据,并使用MVEL设置时间戳。

这是我目前正在尝试的。但这是行不通的。

{"error":"ElasticSearchIllegalArgumentException[failed to execute script]; nested: PropertyAccessException[[Error: could not access property (Timestamp) in: java.lang.Long]\n[Near : {... Timestamp ....}]\n ^\n[Line: 1, Column: 1]]; ","status":400}



我如何访问时间戳字段(通过映射成功创建)
  {
"script": "
valueSet.Timestamp = time();
if (ctx._source[\"values\"] == null) { ctx._source.values = valueSet} else {ctx._source.values += valueSet}
",
"params": {
"valueSet":
[
{
"Timestamp": "",
"value": "100.00"
}
]
}
}

更新:

了解如何访问valueSet
  {
"script": "
valueSet[0].value = 'test';
if (ctx._source[\"values\"] == null) { ctx._source.values = valueSet} else {ctx._source.values += valueSet}
",
"params": {
"valueSet":
[
{
"Timestamp": "",
"value": "100.00"
}
]
}
}

以上将覆盖“100.00”到“测试”。

最佳答案

我能够像数组一样非常简单地更新整个数组或整个字段。
请按照下列步骤。

步骤-1 放置一个smaple数据。

    PUT /1/user/1
{
"userId":2,
"sid":1,
"1": [
"24 hrs left!"
]
,
"2": 9
,
"32": "2014-08-01T00:00:00"
,
"evant": [

{
"name": "2",
"count": 9,
"first_date":"2014-08-01T00:00:00",
"last_date":"2014-08-01T00:00:00",
"_date":["2014-08-01T00:00:00",
"2014-08-01T00:00:00",
"2014-08-01T00:00:00"]
},
{
"name": "3",
"count": 9,
"first_date":"2014-08-01T00:00:00",
"last_date":"2014-08-01T00:00:00",
"_date":["2014-08-01T00:00:00",
"2014-08-01T00:00:00",
"2014-08-01T00:00:00"]
}]
}

步骤2 。更新任何嵌套的字段值。
POST  /1/user/1/_update
{
"script": "foreach (item : ctx._source.evant) { if (item['name'] == name) { item['name'] = item['name']==null?\"none\": 'myname'; } }",
"params": {"name": "abc"}
}

步骤3 。添加任何新字段。
POST  /1/user/1/_update
{
"script": "foreach (item : ctx._source.evant) { if (item['name'] == name) { item['Fname']='zyz'; } }",
"params": {"name": "abc"}
}

关于elasticsearch - 如何在Elasticsearch中使用MVEL访问/更新嵌套字段的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19724047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com