一、ES增加字段索引
當我們需要往已有的ES索引中增加字段時,需要先了解索引的映射(mapping)結構,在此基礎上進行增加字段操作。
可以通過以下代碼示例獲取一個索引的mapping結構:
GET /{index}/_mapping
其中,{index}為指定的索引名稱。
在獲取到mapping結構後,我們需要對其進行修改並重新提交到ES中。
二、ES給已有數據增加字段
當我們進行了ES索引的mapping結構的修改後,已有的數據並沒有該字段,我們可以通過以下方法給已有的數據添加新字段:
POST /{index}/_update_by_query { "script": { "inline": "ctx._source.new_field = 'value'" }, "query": { "match_all": {} } }
其中,{index}為指定的索引名稱,”new_field”為需要增加的新字段名稱,”value”為該字段的默認值或者插入的值。
三、ES增加字段語句
當我們需要在已有的ES索引中增加新的字段時,可以通過以下代碼示例進行增加:
PUT /{index}/_mapping { "properties": { "new_field": { "type": "text", "analyzer": "standard" } } }
其中,{index}為指定的索引名稱,”new_field”為需要增加的新字段名稱,”type”為新字段的類型,”analyzer”為新字段的分析器。
四、ES增加字段需要遷移老數據嗎
在索引中增加新字段時,並不需要遷移老數據。只有在查詢該新字段時,系統會根據新字段類型自動返回默認值或者空值。
五、ES增加字段刪除字段
我們可以通過以下方式刪除ES索引中的字段:
PUT /{index}/_mapping { "properties": { "old_field": { "type":"object", "enabled": false } } }
其中,{index}為指定的索引名稱,”old_field”為需要刪除的字段名稱。
六、ES增加字段並設置默認值
我們可以通過以下方式增加新字段並為字段設置默認值:
PUT /{index}/_mapping { "properties": { "new_field": { "type": "text", "analyzer": "standard", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } }, "null_value": "null" } } }
其中,{index}為指定的索引名稱,”new_field”為需要增加的新字段名稱,”type”為新字段的類型,”analyzer”為新字段的分析器,”fields”為新字段的子屬性,”null_value”為該字段的默認值。
七、ES增加字段需要重建索引嗎
在ES中增加新字段後,索引不需要重建,可以直接開始使用新字段。
八、增加字段的SQL語句
我們可以通過以下SQL語句在ES中增加新字段:
POST /{index}/_sql { "query": "ALTER TABLE {index} ADD new_field TEXT" }
其中,{index}為指定的索引名稱,”new_field”為需要增加的新字段名稱,”TEXT”為新字段的類型。
九、增加字段名SQL
我們可以通過以下SQL語句在ES中增加新字段:
ALTER TABLE {index} ADD new_field TEXT;
其中,{index}為指定的索引名稱,”new_field”為需要增加的新字段名稱,”TEXT”為新字段的類型。
十、ES mapping增加字段
以上是ES增加字段的常見操作方法,除了以上的方法外,也可以通過mapping的方式增加字段:
PUT /{index}/_mapping { "properties": { "new_field": { "type": "text", "analyzer": "ik_max_word" } } }
其中,{index}為指定的索引名稱,”new_field”為需要增加的新字段名稱,”type”為新字段的類型,”analyzer”為新字段的分析器。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/188394.html