ElasticSearch(二)索引管理
目錄
?
索引管理
1、創(chuàng)建索引
2、修改索引
3、刪除索引
4、獲取索引
5、打開和關(guān)閉索引
索引映射管理
1、增加映射
不同類型之間的沖突
2、獲取映射
3、獲取字段映射
4、判斷類型是否存在
?
索引別名
別名維護(hù)
過(guò)濾索引別名
刪除別名
查詢別名
索引配置
更新索引配置
獲取配置
索引分析
索引分析過(guò)程:
索引模板
創(chuàng)建索引模板
刪除索引模板
獲取索引模板
多個(gè)模板匹配
復(fù)制配置
重建索引
索引監(jiān)控
索引統(tǒng)計(jì)
索引分片
索引恢復(fù)
索引分片存儲(chǔ)
狀態(tài)管理
清除緩存
索引刷新
沖洗(flush)
合并索引
文檔管理
增加文檔
自動(dòng)創(chuàng)建索引
版本號(hào)
操作類型
自動(dòng)創(chuàng)建id
分片選擇
其他說(shuō)明
更新刪除文檔
腳本開啟
腳本更新
查詢文檔
多文檔操作
多文檔查詢
索引詞頻率
查詢更新接口
索引管理
1、創(chuàng)建索引
語(yǔ)法:
PUT http://*:*/indexname
{
? ? "settings":{"number_of_shards":3,"number_of_replicas":3}
}
或者
{
? ? "settings":
? ? {
? ? ? ? index:{"number_of_shards":3,"number_of_replicas":3}
? ? }
}
參數(shù):
- nunber_of_shards:分片數(shù)量
- number_of_replicas:副本數(shù)量
返回值:
{
? ? "acknowledged":true
}
?
創(chuàng)建類型與字段
{
? ? "settings":{"number_of_shards":3,"number_of_replicas":3}
? ? "mappings":
? ? ? ? {
? ? ? ? ? ? "secilog": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string"? ?//字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed"? //字段不進(jìn)行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? }
}
?
2、修改索引
語(yǔ)法:
PUT http://*:*/indexname/_settings/
{
? ?"number_of_shards":3
}
3、刪除索引
語(yǔ)法:
DELETE http://*:*/indexname
刪除索引可以用逗號(hào)分割索引名稱,_all代表所有索引,* 通配符。
可以禁止使用_all或通配符(*),通過(guò)action.destructive_requires_name: true 設(shè)置。
4、獲取索引
語(yǔ)法:
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" ?字段不進(jìn)行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? },
? ? "aliases":{},
? ? "warmers":{}
}
//不存在,返回錯(cuò)誤內(nèi)容:
{ "error":........}
5、打開和關(guān)閉索引
語(yǔ)法:
POST?http://*:*/indexname/_close? ? //indexname 可以為一個(gè)或多個(gè)
POST?http://*:*/indexname/_open
?
索引映射管理
1、增加映射
語(yǔ)法:
PUT http://*:*/{indexname}/_mapping/{type}
{body}
- indexname:為索引的名稱,可以指定多個(gè),或者用通配符
- type:為文檔類型
- body:為文檔類型的字段。
一般對(duì)現(xiàn)有字段不會(huì)更新。例外:
- 新的屬性被添加到 對(duì)象類型 的字段
- 新的多域字段 添加到現(xiàn)有字段
- doc_values可以被禁用
- 增加了ignore_above參數(shù)
?
eg:
PUT http://*:*/indexname
{
? ? "mappings":
? ? ? ? {
? ? ? ? ? ? "secilog": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進(jìn)行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? }
}
或者
PUT http://*:*/indexname/_mapping/secilog
{
? ? "properties":
? ? {
? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? {
? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進(jìn)行分析
? ? ? ? ? ? }
? ? }
}
//以上增加文檔類型:secilog。如果文檔類型已存在,則修改或者新增字段。
不同類型之間的沖突
同一索引的不同類型中,相同名稱必須有相同映射。
{
? ? "mapping":
? ? ? ? {
? ? ? ? ? ? "type_one": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進(jìn)行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? "type_two": ?//類型的名稱
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? "properties":
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "logType": ?//字段的名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "type":"string" ? 字段的類型是string類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"index":"not_analyzed" ?字段不進(jìn)行分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? }
}
以上示例,2個(gè)logType字段必須配置相同,如果只更新一個(gè)會(huì)拋出異常,可以通過(guò)添加? ?update_all_types 更新所有類型。
2、獲取映射
語(yǔ)法:
GET?http://*:*/{indexname}/_mapping/{type}
3、獲取字段映射
語(yǔ)法:
GET?http://*:*/{indexname}/_mapping/{type}/field/{field}
4、判斷類型是否存在
語(yǔ)法:
HEAD?http://*:*/{indexname}/{type}
返回200 或者 404
?
索引別名
ES可以對(duì)索引指定別名,別名不能重復(fù),也不能與索引重名。別名相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)中的視圖。
別名維護(hù)
POST?http://*:*/_aliases
{
? ? "actions":
? ? [
? ? {"add":{"index":"index_name","alias":"alias_name"}}
? ? ,{"remove":{"index":"index_name","alias":"alias_name"}}
? ? ]
}
一個(gè)別名可以對(duì)應(yīng)多個(gè)索引。
過(guò)濾索引別名
{"add":{"index":"index_name","alias":"alias_name"
"filter":{"term": {"user":"jim"} }
"routing":"1",
"search_routing":"1,2",? ?//搜索路由可以指定多個(gè)值,
"index_routing":"1",? ? //索引路由只能指定1個(gè)值。
?
}}
刪除別名
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
索引分析
索引分析過(guò)程:
1、文本塊拆分為詞
2、標(biāo)準(zhǔn)化詞
這些過(guò)程由分析器(analysers)完成。
一個(gè)分析器是一個(gè)組合,用于將3個(gè)功能放在一起
- 字符過(guò)濾器
字符串經(jīng)過(guò)字符過(guò)濾器(character filter)處理,去掉一些無(wú)意義的字符,例如HMTL標(biāo)記。
- 分詞器(tokenizer)
分詞器標(biāo)記一個(gè)個(gè)獨(dú)立的詞,例如通過(guò)空格,標(biāo)點(diǎn)等分割
- 標(biāo)記過(guò)濾器
每個(gè)詞都通過(guò)所有標(biāo)記過(guò)濾(token filter)處理。它可以修改詞(大小寫轉(zhuǎn)換),去掉詞(a,an等),增加詞(同義詞)
測(cè)試分析器:
POST?http://*:*/_analyze
{
? ? "analyzer":"standard",
? ? "text":"this is a text"
}
tokenizer: keyword,
token_filters: ["lowercase",...]
char_filters:["html_script",...]
explain:true
指定索引進(jìn)行分詞:
POST?http://*:*/{index}/_analyze
索引模板
索引模板是索引創(chuàng)建的模板,指定了settings和mappings。在創(chuàng)建索引時(shí)指定模板名,就可以把模板信息應(yīng)用到索引。
創(chuàng)建索引模板
POST?http://*:*/_template/{template_name}
{
? ? "template":"te*",
? ? "settings":{}
? ? "mappings":{}
}
刪除索引模板
DELETE?http://*:*/_template/{template_name}
獲取索引模板
GET?http://*:*/_template/{template_name}
//支持通配符,逗號(hào)
多個(gè)模板匹配
通過(guò)通配符匹配多個(gè)模板,會(huì)合并模板配置,相同項(xiàng)是通過(guò)order確定,從0 開始,order值大的優(yōu)先級(jí)高
復(fù)制配置
重建索引
索引監(jiān)控
索引統(tǒng)計(jì)
GET?http://*:*/_stats
GET?http://*:*/{index}/_stats
統(tǒng)計(jì)數(shù)據(jù)選項(xiàng):
GET?http://*:*/_stats/options
GET?http://*:*/_stats/merge,refresh
選項(xiàng):
。。。。。。
索引分片
提供索引的分片信息
GET?http://*:*/{indexname}/_segments
索引恢復(fù)
索引恢復(fù)提供正在進(jìn)行恢復(fù)的索引分片信息
GET?http://*:*/{indexname}/_reconvery
索引分片存儲(chǔ)
提供索引分片副本的存儲(chǔ)信息
GET?http://*:*/{indexname}/_shard_stores
狀態(tài)管理
清除緩存
清除緩存可以清除管理一個(gè)或多個(gè)索引的緩存,或者特定的緩存。
POST?http://*:*/{indexname}/_cache/clear
接口默認(rèn)清理所有緩存,可以明確確定query,fielddata,request,fields來(lái)清理特定緩存
索引刷新
使之前的最后一次刷新后的所有操作執(zhí)行。
POST?http://*:*/{indexname}/_refresh
POST?http://*:*/_refresh
沖洗(flush)
沖洗用于把索引的數(shù)據(jù)寫入存儲(chǔ)并且清除內(nèi)部事務(wù)日志,用于釋放索引的內(nèi)存空間。
POST?http://*:*/{indexname}/_flush
合并索引
強(qiáng)制合并一個(gè)或多個(gè)索引,合并分片數(shù)量和每個(gè)分片保存的Lucene索引。
POST?http://*:*/{indexname}/_forcemerge
POST?http://*:*/_forcemerge
文檔管理
增加文檔
POST?http://*:*/{indexname}/{type}/{id}
{body}
自動(dòng)創(chuàng)建索引
默認(rèn)會(huì)自動(dòng)創(chuàng)建索引
版本號(hào)
每個(gè)文檔都有一個(gè)版本號(hào),版本號(hào)信息放在返回字段_version中,主要用于并發(fā)事務(wù)處理。
操作類型
可以強(qiáng)制指定操作類型,op_create,只有不存在時(shí)才會(huì)執(zhí)行成功。
自動(dòng)創(chuàng)建id
不指定id時(shí)會(huì)自動(dòng)創(chuàng)建。
分片選擇
默認(rèn)分片是通過(guò)id的散列值,可以通過(guò)routing=xx來(lái)指定分片的選擇
其他說(shuō)明
分布式:索引操作主要針對(duì)主節(jié)點(diǎn)的分片操作,操作后分發(fā)副本。
一致性:
刷新:可以在操作時(shí)指定refresh=true,強(qiáng)制刷新所有副本,已做優(yōu)化,不會(huì)影響性能。
空操作:文檔沒(méi)有任何變更,會(huì)變更版本號(hào),可以指定detect_noop=true 防止。
超時(shí):默認(rèn)超時(shí)1分鐘,timeout設(shè)置超時(shí)時(shí)間。
更新刪除文檔
允許通過(guò)腳本操作文檔
腳本開啟
默認(rèn)關(guān)閉,安全考慮。設(shè)置開啟參數(shù),需要重啟ES
開啟參數(shù):
script.inline:on
script.indexed:on
script.file:on
腳本更新
POST?http://*:*/{indexname}/{type}/{id}/_update
{
? "script":
{"inline":? ""
,"params":{}
}
}
查詢文檔
GET?http://*:*/{indexname}/{type}/{id}/
#只獲取內(nèi)容
GET?http://*:*/{indexname}/{type}/{id}/_source
#分片選擇
GET?http://*:*/{indexname}/{type}/{id}?routing=
多文檔操作
多文檔查詢
POST?http://*:*/_mget
{
? ? "docs":
? ? [
? ? ? ? {"_index":"","_type":"","_id":""}
? ? ? ? ,......
? ? ]
}
?
索引詞頻率
查詢更新接口
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的ElasticSearch(二)索引管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ElasticSearch(一)基础知识
- 下一篇: mongodb语法与spring实现