要在现有的Elasticsearch索引中启用`doc_values`,需要注意的是,直接修改现有索引的映射(mapping)是不可能的,因为一旦创建了索引及其映射后,大部分设置都是不可变的。不过,有几种方法可以实现你的目标:
### 方法1:重新索引数据
最常见和推荐的方法是创建一个新的索引,并在其中为所需字段开启`doc_values`,然后将现有索引的数据重新索引到新索引中。
1. **创建新索引**:首先,你需要根据旧索引的映射创建一个新索引,并确保你想要使用`doc_values`的字段在其映射中明确设置了`"doc_values": true`。如果原本没有禁用`doc_values`,则不需要显式设置此参数,因为它是默认开启的(除了`text`类型的字段)。
```json
PUT /new_index_name
{
"mappings": {
"properties": {
"your_field_name": {
"type": "keyword",
"doc_va