一、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-tw/n/188394.html