Elastic Search學習——CRUD

**

1、 分詞器的介紹,以及內置分詞器

**
從一段文本中切出一條一條的詞條,並對每個詞條進行標準化。
1.character filter:分詞之前的預處理,過濾掉HTML標籤,特殊符號轉換等
2.tokenizer:分詞
3.token filter:標準化
內置分詞器:
1.standard 分詞器:(默認的)他會將詞彙單元轉換成小寫形式,並去除停用詞和標點符號,支持中文采用的方法爲單字切分
2.simple 分詞器:首先會通過非字母字符來分割文本信息,然後將詞彙單元統一爲小寫形式。該分析器會去掉數字類型的字符。
3.Whitespace 分詞器:僅僅是去除空格,對字符沒有lowcase化,不支持中文;
並且不對生成的詞彙單元進行其他的標準化處理。
4.language 分詞器:特定語言的分詞器,不支持中文
**2

2、使用es實現CRUD。

**
1.添加索引

	PUT /lib/
			{

  "settings":{
  
      "index":{
      
        "number_of_shards": 5,
        
        "number_of_replicas": 1
        
        }
        
      }
}
**2.查看索引信息**
	GET /lib/_setting
	GET _all/_setting
**3.添加文檔**


	PUT /lib/user/1
		{
    "first_name" :  "Jane",
    
    "last_name" :   "Smith",
    
    "age" :         32,
    
    "about" :       "I like to collect rock albums",
    
    "interests":  [ "music" ]
}

說明:lib是索引,user是類型,1是文檔的id

POST /lib/user/

{
    "first_name" :  "Douglas",
    
    "last_name" :   "Fir",
    
    "age" :         23,
    
    "about":        "I like to build cabinets",
    
    "interests":  [ "forestry" ]
    
}

4.查看文檔
1、查看lib索引中的user類型id爲1的文檔內容
GET /lib/user/1
2、查看lib中的user的所有的文檔內容
GET /lib/user/
3、指定屬性查看文檔中的數據
GET /lib/user/1?_source=age,interests

5.更新文檔
1、 可以直接使用PUT直接覆蓋
2、 指定內容修改

POST /lib/user/1/_update
{
		“doc”{
“age”:22
}
}

6.刪除一個文檔
1、 DELETE /lib/user/1
7.刪除一個索引
1、 DELETE /lib
3、批量獲取文檔
在es中存在Multi GET API,可以通過索引名,類型,文檔id一次得到一個文檔集合,文檔可以不是一個索引庫的內容。
使用curl命令操作:
curl “服務器地址+端口號/_mget” –d {

“doc”[
{
“_index”:”lib”,
“_type”:”user”,
“_id”:”1”
},
{
“_index”:”lib”,
“_type”:”user”,
“_id”:”2”
}
]
}

在客戶端工具中使用:

GET/_mget
{
		“doc”[
{
“_index”:”lib”,
“_type”:”user”,
“_id”:”1”
},
{
“_index”:”lib”,
“_type”:”user”,
“_id”:”2”
}
]
}

也可以指定字段查詢,在條件中加入“_source”:”字段名”,多個字段使用[],如“_source”:[”字段名”,”….”],查詢/同一個索引,類型中的文檔,可把相同段提出來,如:GET /lib/user/_mget{……}.也可以直接選擇id來獲取文檔。
GET /lib/user/_mget
{
“ids”: [“1”,“2”]
}
4、批量操作文檔。
使用Bulk API 實現批量操作,bulk的格式:
{action:{metadata}}
{requstbody}

1.action:(行爲)
create:文檔不存在時創建,如果已經創建,再創建的時候會失敗。
update:更新文檔
index:創建新文檔或替換已有文檔
delete:刪除一個文檔

2.metadata:_index,_type,_id :
例如:刪除一個文檔
{“delete”:{“_index”:”lib”,”_type”:”user”,”_id”:”1”}}
批量操作(添加)

POST /lib2/books/_bulk
{"index":{"_id":1}}
{"title":"Java","price":55}
{"index":{"_id":2}}
{"title":"Html5","price":45}

{"index":{"_id":3}}
{"title":"Php","price":35}

{"index":{"_id":4}}
{"title":"Python","price":50}

批量獲取可使用我們上面講過的_mget

GET /lib2/books/_mget
{
"ids": ["1","2","3","4"]
}

批量刪除,沒有請求實體,批量操作。
POST /lib2/books/_bulk

{"delete":{"_index":"lib2","_type":"books","_id":4}}

{"create":{"_index":"tt","_type":"ttt","_id":"100"}}
{"name":"lisi"}

{"index":{"_index":"tt","_type":"ttt"}}
{"name":"zhaosi"}

{"update":{"_index":"lib2","_type":"books","_id":"4"}}
{"doc":{"price":58}}

bulk一般建議處理1000-5000個文檔,大小建議爲100M。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章