我目前正在使用Elastic search 5.2,并尝试使用以下rest api执行upsert操作:
>
http://ip:9200/indexname/typename/id/_update
Json有效载荷:
{
"script" : {
"inline": "ctx._source.size +=params.size",
"lang": "painless",
"params" :{
"size" : 14889114000
}
},
"upsert" : {
"size" : 1488911400
}
}
此api执行以下操作:
1.)如果在弹性搜索中没有找到索引,则使用upsert字段中提供的json创建索引。< br> 2。)如果索引存在,那么它通过运行文档中提供的简单脚本来执行部分更新。
问题:< br >我已经为计数器创建了弹性搜索索引映射。< br>
此更新工作正常,直到计数器值在整数范围内。(即2,147,483,647
超过此值,它溢出并变成负值,在预期值为正long值的情况下(因为对应的索引映射为long)。有没有办法在使用无痛脚本的同时解决这个int溢出问题?
您只需稍微修改脚本,而不使用<code>=而不是ctx._source。大小=参数。大小
,则它将按您的预期工作:
POST indexname/typename/id/_update
{
"script" : {
"inline": "ctx._source.size = ctx._source.size + params.size",
"lang": "painless",
"params" :{
"size" : 14889114000
}
},
"upsert" : {
"size" : 1488911400
}
}
首先,文档将以<code>大小:1488911400
我是ES的新手,我正在尝试使用聚合编写搜索查询。 在写同样的东西时,我面临着无痛脚本的问题。 哪里可以得到完整的无痛脚本文档,用于弹性搜索?
我在elasticsearch中创建了一个观察器,当我们在索引中10分钟没有新条目或事件时,它会报告,这可以通过查看条目中的源字段来进一步划分。 我只得到了索引的最后10分钟,并查看了桶中不存在哪个源。 为此,我首先创建我们收到的所有源类型的列表,然后从返回的存储桶键创建一个列表。然后,我想比较列表以查看缺少哪个列表,然后将其传递到消息中。 我在for循环中遇到了一个通用错误。任何反馈对弹性和无痛
我想将地理信息的旧数据重新索引到地理点。 以前的数据包含这种格式的位置。 我想像这样在数组中的地理点中重新索引位置 这是映射 这是我执行重新索引的请求。 问题它没有覆盖位置:{} 到位置:[]
我有一个弹性查询脚本,用于使用我给出的参数计算地面距离,我必须在多个查询中使用它。是否有一种方法可以避免这种重复,例如,有一种计算全局变量并在所有脚本中使用它的方法。在本例中,我希望计算<code>距离 映射:
我使用的是 ES 版本 7.0。我有一个商店索引,其中有空闲时间(开放和关闭时间)在UTC时间。我在 Integer 中存储了时间,以便它可以轻松地与无痛脚本中的当前时间匹配。 下面是一个示例文档: 下面是使用无痛脚本的查询: 上述查询适用于星期三的时间300,结果中给出了上述文档,但不适用于星期四的时间1400。看起来脚本总是匹配可用性数组中的第一个值。 我还试图循环浏览可用性日,但这并没有给我
你能建议如何更新基于条件字段的文档(使用脚本-我猜是无痛的)吗? 其目的是添加/删除文档中的值 所以如果我有这些输入文档: 我想表演这样的东西: 使用以下命令更新具有“flag=true”的所有文档: 添加标签:"me","one" 已删除标签:“goo”、“foo” 所以预期结果应该是这样的: