我可以问一下,如何在转换'字符串'字段时重新索引,例如“field2”:“123.2”(在旧索引文档中)为浮点数/双数,例如“field2”:123.2(打算在新索引中)?这篇文章是我能得到的最接近的帖子,但我不知道用于将字符串转换/转换为数字的函数。我使用的是ElasticSearch版本2.3.3。非常感谢您的任何建议!
答案 0 :(得分:0)
使用Elasticsearch templates指定新索引的映射,并将字段指定为double类型。
构建模板的最简单方法是使用现有的映射。
public IActionResult GetUserList()
{
var UserListVM = new UsetListViewModel()
{
UserList = _userManager.Users.OrderBy(u => u.Value).Select(u => new SelectListItem { Value = u.UserName, Text = u.UserName }).ToList()
};
return View(UserListVM);
}
然后使用elasticsearch _reindex API将数据从旧索引移动到新索引,并使用内联脚本将该字段解析为double(您可能需要enable inline scripting)
GET oldindex/_mapping
POST _template/templatename
{
"template" : "newindex", // this can be a wildcard pattern to match indexes
"mappings": { // this is copied from the response of the previous call
"mytype": {
"properties": {
"field2": {
"type": "double" // change the type
}
}
}
}
}
POST newindex
GET newindex/_mapping
修改:已更新以使用_reindex端点
答案 1 :(得分:0)
您可以使用Logstash重新索引数据并转换字段。如下所示:
input {
elasticsearch {
hosts => "es.server.url"
index => "old_index"
query => "*"
size => 500
scroll => "5m"
docinfo => true
}
}
filter {
mutate {
convert => { "fieldname" => "long" }
}
}
output {
elasticsearch {
host => "es.server.url"
index => "new_index"
index_type => "%{[@metadata][_type]}"
document_id => "%{[@metadata][_id]}"
}
}