日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch(二)索引管理

發布時間:2024/4/13 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch(二)索引管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

索引管理

1、創建索引

2、修改索引

3、刪除索引

4、獲取索引

5、打開和關閉索引

索引映射管理

1、增加映射

不同類型之間的沖突

2、獲取映射

3、獲取字段映射

4、判斷類型是否存在

?

索引別名

別名維護

過濾索引別名

刪除別名

查詢別名

索引配置

更新索引配置

獲取配置

索引分析

索引分析過程:

索引模板

創建索引模板

刪除索引模板

獲取索引模板

多個模板匹配

復制配置

重建索引

索引監控

索引統計

索引分片

索引恢復

索引分片存儲

狀態管理

清除緩存

索引刷新

沖洗(flush)

合并索引

文檔管理

增加文檔

自動創建索引

版本號

操作類型

自動創建id

分片選擇

其他說明

更新刪除文檔

腳本開啟

腳本更新

查詢文檔

多文檔操作

多文檔查詢

索引詞頻率

查詢更新接口


索引管理

1、創建索引

語法:

PUT http://*:*/indexname

{
? ? "settings":{"number_of_shards":3,"number_of_replicas":3}
}

或者
{
? ? "settings":
? ? {
? ? ? ? index:{"number_of_shards":3,"number_of_replicas":3}
? ? }
}

參數:

  • nunber_of_shards:分片數量
  • number_of_replicas:副本數量

返回值:

{
? ? "acknowledged":true
}
?

創建類型與字段

{
? ? "settings":{"number_of_shards":3,"number_of_replicas":3}
? ? "mappings":
? ? ? ? {
? ? ? ? ? ? "secilog": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string"? ?//字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed"? //字段不進行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? }
}

?

2、修改索引

語法:

PUT http://*:*/indexname/_settings/

{
? ?"number_of_shards":3
}

3、刪除索引

語法:

DELETE http://*:*/indexname

刪除索引可以用逗號分割索引名稱,_all代表所有索引,* 通配符。

可以禁止使用_all或通配符(*),通過action.destructive_requires_name: true 設置。

4、獲取索引

語法:

GET?http://*:*/indexname

或者指定返回的配置部分

GET?http://*:*/indexname/_settings,_mappings,_warmers,_aliases

返回值:

{
? ? "settings":{"number_of_shards":3,"number_of_replicas":3},
? ? "mapping":
? ? ? ? {
? ? ? ? ? ? "secilog": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? },
? ? "aliases":{},
? ? "warmers":{}
}

//不存在,返回錯誤內容:

{ "error":........}

5、打開和關閉索引

語法:

POST?http://*:*/indexname/_close? ? //indexname 可以為一個或多個

POST?http://*:*/indexname/_open

?

索引映射管理

1、增加映射

語法:

PUT http://*:*/{indexname}/_mapping/{type}
{body}

  • indexname:為索引的名稱,可以指定多個,或者用通配符
  • type:為文檔類型
  • body:為文檔類型的字段。

一般對現有字段不會更新。例外:

  • 新的屬性被添加到 對象類型 的字段
  • 新的多域字段 添加到現有字段
  • doc_values可以被禁用
  • 增加了ignore_above參數

?

eg:

PUT http://*:*/indexname

{
? ? "mappings":
? ? ? ? {
? ? ? ? ? ? "secilog": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? }
}

或者

PUT http://*:*/indexname/_mapping/secilog

{
? ? "properties":
? ? {
? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? {
? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進行分析
? ? ? ? ? ? }
? ? }
}
//以上增加文檔類型:secilog。如果文檔類型已存在,則修改或者新增字段

不同類型之間的沖突

同一索引的不同類型中相同名稱必須有相同映射

{
? ? "mapping":
? ? ? ? {
? ? ? ? ? ? "type_one": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? "type_two": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? }
}

以上示例,2個logType字段必須配置相同,如果只更新一個會拋出異常,可以通過添加? ?update_all_types 更新所有類型。

2、獲取映射

語法:

GET?http://*:*/{indexname}/_mapping/{type}

3、獲取字段映射

語法:

GET?http://*:*/{indexname}/_mapping/{type}/field/{field}

4、判斷類型是否存在

語法:

HEAD?http://*:*/{indexname}/{type}

返回200 或者 404

?

索引別名

ES可以對索引指定別名,別名不能重復,也不能與索引重名。別名相當于關系數據庫中的視圖

別名維護

POST?http://*:*/_aliases
{
? ? "actions":
? ? [
? ? {"add":{"index":"index_name","alias":"alias_name"}}
? ? ,{"remove":{"index":"index_name","alias":"alias_name"}}
? ? ]
}

一個別名可以對應多個索引

過濾索引別名

{"add":{"index":"index_name","alias":"alias_name"

"filter":{"term": {"user":"jim"} }

"routing":"1",

"search_routing":"1,2",? ?//搜索路由可以指定多個值,

"index_routing":"1",? ? //索引路由只能指定1個值。

?

}}

刪除別名

DELETE?http://*:*/{index}/_alias/{aliasname}

查詢別名

GET?http://*:*/{index}/_alias/{aliasname}

HEAD?http://*:*/{index}/_alias/{aliasname}

索引配置

更新索引配置

PUT?http://*:*/{index}/_settings

PUT?http://*:*/_settings

獲取配置

GET?http://*:*/{index}/_settings

索引分析

索引分析過程:

1、文本塊拆分為詞

2、標準化詞

這些過程由分析器(analysers)完成。

一個分析器是一個組合,用于將3個功能放在一起

  • 字符過濾器

字符串經過字符過濾器(character filter)處理,去掉一些無意義的字符,例如HMTL標記。

  • 分詞器(tokenizer)

分詞器標記一個個獨立的詞,例如通過空格,標點等分割

  • 標記過濾器

每個詞都通過所有標記過濾(token filter)處理。它可以修改詞(大小寫轉換),去掉詞(a,an等),增加詞(同義詞)

測試分析器:

POST?http://*:*/_analyze
{
? ? "analyzer":"standard",
? ? "text":"this is a text"
}

tokenizer: keyword,

token_filters: ["lowercase",...]

char_filters:["html_script",...]

explain:true

指定索引進行分詞:

POST?http://*:*/{index}/_analyze

索引模板

索引模板是索引創建的模板,指定了settings和mappings。在創建索引時指定模板名,就可以把模板信息應用到索引。

創建索引模板

POST?http://*:*/_template/{template_name}
{
? ? "template":"te*",
? ? "settings":{}
? ? "mappings":{}
}

刪除索引模板

DELETE?http://*:*/_template/{template_name}

獲取索引模板

GET?http://*:*/_template/{template_name}

//支持通配符,逗號

多個模板匹配

通過通配符匹配多個模板,會合并模板配置,相同項是通過order確定,從0 開始,order值大的優先級高

復制配置

重建索引

索引監控

索引統計

GET?http://*:*/_stats
GET?http://*:*/{index}/_stats

統計數據選項:

GET?http://*:*/_stats/options

GET?http://*:*/_stats/merge,refresh

選項:

。。。。。。

索引分片

提供索引的分片信息

GET?http://*:*/{indexname}/_segments

索引恢復

索引恢復提供正在進行恢復的索引分片信息

GET?http://*:*/{indexname}/_reconvery

索引分片存儲

提供索引分片副本的存儲信息

GET?http://*:*/{indexname}/_shard_stores

狀態管理

清除緩存

清除緩存可以清除管理一個或多個索引的緩存,或者特定的緩存。

POST?http://*:*/{indexname}/_cache/clear

接口默認清理所有緩存,可以明確確定query,fielddata,request,fields來清理特定緩存

索引刷新

使之前的最后一次刷新后的所有操作執行。

POST?http://*:*/{indexname}/_refresh

POST?http://*:*/_refresh

沖洗(flush)

沖洗用于把索引的數據寫入存儲并且清除內部事務日志,用于釋放索引的內存空間。

POST?http://*:*/{indexname}/_flush

合并索引

強制合并一個或多個索引,合并分片數量和每個分片保存的Lucene索引。

POST?http://*:*/{indexname}/_forcemerge

POST?http://*:*/_forcemerge

文檔管理

增加文檔

POST?http://*:*/{indexname}/{type}/{id}

{body}

自動創建索引

默認會自動創建索引

版本號

每個文檔都有一個版本號,版本號信息放在返回字段_version中,主要用于并發事務處理。

操作類型

可以強制指定操作類型,op_create,只有不存在時才會執行成功。

自動創建id

不指定id時會自動創建。

分片選擇

默認分片是通過id的散列值,可以通過routing=xx來指定分片的選擇

其他說明

分布式:索引操作主要針對主節點的分片操作,操作后分發副本。

一致性:

刷新:可以在操作時指定refresh=true,強制刷新所有副本,已做優化,不會影響性能。

空操作:文檔沒有任何變更,會變更版本號,可以指定detect_noop=true 防止。

超時:默認超時1分鐘,timeout設置超時時間。

更新刪除文檔

允許通過腳本操作文檔

腳本開啟

默認關閉,安全考慮。設置開啟參數,需要重啟ES

開啟參數:

script.inline:on

script.indexed:on

script.file:on

腳本更新

POST?http://*:*/{indexname}/{type}/{id}/_update

{

? "script":

{"inline":? ""

,"params":{}

}

}

查詢文檔

GET?http://*:*/{indexname}/{type}/{id}/

#只獲取內容

GET?http://*:*/{indexname}/{type}/{id}/_source

#分片選擇

GET?http://*:*/{indexname}/{type}/{id}?routing=

多文檔操作

多文檔查詢

POST?http://*:*/_mget
{
? ? "docs":
? ? [
? ? ? ? {"_index":"","_type":"","_id":""}
? ? ? ? ,......
? ? ]
}
?

索引詞頻率

查詢更新接口

?

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的ElasticSearch(二)索引管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。