我想将地理信息的旧数据重新索引到地理点。
以前的数据包含这种格式的位置。
"geoip": {
"location": {
"lon": 67.0703,
"lat": 24.9206
}
}
我想像这样在数组中的地理点中重新索引位置
"geoip": {
"location": [lon, lat]
}
这是映射
PUT logs-audit-geopoint/_mapping/doc
{
"properties": {
"json":{
"properties": {
"geoip":{
"properties":{
"location": {
"type": "geo_point"
}
}
}
}
}
}
}
这是我执行重新索引的请求。
POST _reindex
{
"source": {
"index": "logs-audit"
},
"dest": {
"index": "logs-audit-geopoint"
},
"script": {
"source": "def geoip = ctx._source.json.geoip; if(geoip != null) { geoip.location = [geoip.longitude, geoip.latitude]; }",
"lang": "painless"
}
}
问题它没有覆盖位置:{} 到位置:[]
使用临时索引来转换数据:
日志-审核(源)< br >测试(临时)< br >日志-审核-地理点(目标)
逐步迁移的过程:
1-使用新变量location_new从源索引[logs-审计]转移到[test]索引(空的没有映射)。
POST _reindex
{
"source": {
"index": "logs-audit"
},
"dest": {
"index": "test"
},
"script": {
"source": "def geoip = ctx._source.json.geoip; if(geoip != null && geoip != '' ) { geoip.location = null; geoip.location_new = [geoip.longitude, geoip.latitude] }",
"lang": "painless"
}
}
2-使用以下映射创建新索引(geoip.location = geo_point)
PUT logs-audit-geopoint/_mapping/doc
{
"properties": {
"json":{
"properties": {
"geoip":{
"properties":{
"location": {
"type": "geo_point"
}
}
}
}
}
}
}
3-然后从测试索引转移到新索引。
POST _reindex
{
"source": {
"index": "test"
},
"dest": {
"index": "logs-audit-geopoint"
},
"script": {
"source": "def geoip = ctx._source.json.geoip; if(geoip != null && geoip != '' ) { geoip.location = geoip.location_new }",
"lang": "painless"
}
}
我是ES的新手,我正在尝试使用聚合编写搜索查询。 在写同样的东西时,我面临着无痛脚本的问题。 哪里可以得到完整的无痛脚本文档,用于弹性搜索?
我在elasticsearch中创建了一个观察器,当我们在索引中10分钟没有新条目或事件时,它会报告,这可以通过查看条目中的源字段来进一步划分。 我只得到了索引的最后10分钟,并查看了桶中不存在哪个源。 为此,我首先创建我们收到的所有源类型的列表,然后从返回的存储桶键创建一个列表。然后,我想比较列表以查看缺少哪个列表,然后将其传递到消息中。 我在for循环中遇到了一个通用错误。任何反馈对弹性和无痛
我有一个弹性查询脚本,用于使用我给出的参数计算地面距离,我必须在多个查询中使用它。是否有一种方法可以避免这种重复,例如,有一种计算全局变量并在所有脚本中使用它的方法。在本例中,我希望计算<code>距离 映射:
我目前正在使用Elastic search 5.2,并尝试使用以下rest api执行upsert操作: > http://ip:9200/indexname/typename/id/_update Json有效载荷: } 此api执行以下操作: 1.)如果在弹性搜索中没有找到索引,则使用upsert字段中提供的json创建索引。< br> 2。)如果索引存在,那么它通过运行文档中提供的简单脚本来
我编写了一个reindex方法,可以执行以下操作: 它确实起到了作用,但我现在确定,仅仅删除然后创建一个索引是否有意义。如何改进此方法?
我正在使用批量请求执行弹性搜索完整索引。我在索引过程中遇到了一个问题,结果是空的。由于我正在完整索引期间删除索引,因此如何处理这种情况。 我已经完成了以下步骤: 删除索引 创建索引 创建映射 批量请求 索引属性和映射: } 我有大约7.5万份文件。 谢谢,Sree。