这是我当前的架构
{
"mappings": {
"historical_data": {
"properties": {
"continent": {
"type": "string",
"index": "not_analyzed"
},
"country": {
"type": "string",
"index": "not_analyzed"
},
"description": {
"type": "string"
},
"funding": {
"type": "long"
},
"year": {
"type": "integer"
},
"agency": {
"type": "string"
},
"misc": {
"type": "string"
},
"university": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
我上传了700k条记录。在不破坏数据的情况下,如何才能使大学索引“未被分析”,以便更改反映在我现有的数据中?
答案 0 :(得分:2)
无法修改现有字段的映射。 但是,您可以通过两种方式实现预期的结果。
curl -XPUT localhost:9200/YOUR_INDEX/_mapping -d '{ "properties": { "new_university": { "type": "string" } } }'
curl -XPUT localhost:9200/YOUR_INDEX/_mapping -d '{ "properties": { "university": { "type": "string", "index": "not_analyzed", "fields": { "university_analyzed": { "type": "string" // <-- ANALYZED sub field } } } } }'
在这两种情况下,您需要重新索引才能填充新字段。使用_reindex API
curl -XPUT localhost:9200/_reindex -d '{
"source": {
"index": "YOUR_INDEX"
},
"dest": {
"index": "YOUR_INDEX"
},
"script": {
"inline": "ctx._source.university = ctx._source.university"
}
}'
答案 1 :(得分:0)
你并没有被迫&#34;销毁&#34;您的数据,您可以做的是重新索引您的数据,如this article中所述(我不会扯掉这些示例,因为它们在零停机时间重新索引您的数据部分中特别清楚)。
对于重建索引,您还可以查看reindexing API,最简单的方法是:
POST _reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter"
}
}
当然,执行此操作需要一些资源,因此我建议您仔细查看要在映射中引入的更改,并在您的活动量最少时执行操作服务器(例如在周末或晚上......)