尝试找出如何访问ArrayList中的项目。
我在_source中有值:
"session_id" : [
"19a7ec8d",
"19a7ec8d"
],
由于它们都是重复项(由于错误的Grok脚本),我想摆脱重复项:
我无法锻炼如何获取值(value)。
String old = ctx._source.session_id[0];
ctx._source.remove(\"session_id\");
ctx._source.session_id = old;
我也尝试过:
String old = ctx._source.session_id.get(0);
String old = ctx._source.session_id.get(0).value()
String old = ctx._source.session_id[0].value()
String old = ctx._source.session_id.get(0).toString()
谢谢
最佳答案
您可以使用_update_by_query
数据:
"hits" : [
{
"_index" : "index7",
"_type" : "_doc",
"_id" : "zQPYkXEB9JyZpSui0FLw",
"_score" : 1.0,
"_source" : {
"session_id" : [
"19a7ec8d",
"19a7ec8d"
]
}
}
]
查询:
POST index7/_update_by_query
{
"script":{
"source":"if(ctx._source.session_id instanceof List && ctx._source.session_id.size()>0) { def firstValue=ctx._source.session_id[0];ctx._source.session_id=firstValue;}"
},
"query":{
"match_all":{}
}
}
结果:
"hits" : [
{
"_index" : "index7",
"_type" : "_doc",
"_id" : "zQPYkXEB9JyZpSui0FLw",
"_score" : 1.0,
"_source" : {
"session_id" : "19a7ec8d"
}
}
]
关于elasticsearch - 无痛地访问ArrayList中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61301494/