ElasticSearch版本5.3.2,版本較老,僅供參考。
1、概念
索引(index) 類似于數(shù)據(jù)庫(kù)
type 類似于表table
文檔(document) 指的是1條數(shù)據(jù)
field字段 相當(dāng)于column
mapping 設(shè)置索引里邊每個(gè)表的字段、字段類型、是否被索引等等。
2、創(chuàng)建索引
-
創(chuàng)建一個(gè)名字叫zl2的索引,沒(méi)有設(shè)置mappings
PUT請(qǐng)求
http://192.168.31.210:9200/zl2
-
給沒(méi)設(shè)置mappings的索引,設(shè)置mappings
POST請(qǐng)求
http://192.168.31.210:9200/zl2/datatables/_mappings
參數(shù)
{
"datatables":{
"properties":{
"titlezl2":{
"analyzer":"standard",
"type":"text"
},
"articleIdzl2":{
"type":"keyword"
},
"contentzl2":{
"index": "true",
"analyzer":"standard",
"type":"text"
},
"urlzl2":{
"type":"text"
},
"releaseTime2":{
"type":"date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
-
創(chuàng)建一個(gè)名字叫zl3的索引,mappings也設(shè)置了
PUT請(qǐng)求
http://192.168.31.210:9200/zl3
參數(shù)
{
"mappings":{
"datatables":{
"properties":{
"titlezl":{
"analyzer":"standard",
"type":"text"
},
"articleIdzl":{
"type":"keyword"
},
"contentzl":{
"index": "true",
"analyzer":"standard",
"type":"text"
},
"urlzl":{
"type":"text"
},
"releaseTime":{
"type":"date"
}
}
}
}
}
3、刪除索引
DELETE請(qǐng)求
http://192.168.31.210:9200/zl3
4、刪除type
不支持刪除mappings里的type,僅支持清空type里的所有文檔
http://192.168.31.210:9200/zl1/777/_delete_by_query?conflicts=proceed
參數(shù)
{
"query": {
"match_all": {}
}
}
5、添加數(shù)據(jù)(document)
POST請(qǐng)求
http://192.168.31.210:9200/zl1/{type}/{id}
不傳id會(huì)隨機(jī)生成一個(gè)id,如:AYKP_-0wz8JlnsXDPDGd
例子:
http://192.168.31.210:9200/zl1/datatables/888
參數(shù)
{
"releaseTime":"2022-08-12",
"articleId":"123456",
"title":"長(zhǎng)沙市317公交車司機(jī)素質(zhì)太差",
"content":"8月9日早上7點(diǎn)15分,我提早5分鐘在長(zhǎng)華小區(qū)公交車站站臺(tái)等317路始發(fā)公交車,7點(diǎn)18分317路公交車進(jìn)站,我離車門口僅10米左右,就邊戴口罩邊拿手機(jī)找乘車碼邊走向車門口,因是始發(fā)站,一般都是7點(diǎn)20準(zhǔn)時(shí)發(fā)車,我也就沒(méi)太著急,等我剛到車門口一兩米遠(yuǎn),車門關(guān)了,我敲車門也不開(kāi),始發(fā)站的車停留不到10秒就跑了!可以調(diào)取監(jiān)控查看!這嚴(yán)重影響我的出行時(shí)間和上班考勤打卡,且嚴(yán)重不注意行車安全!網(wǎng)上一直說(shuō)長(zhǎng)沙公交司機(jī)素質(zhì)差,我還不太信,這次是真的見(jiàn)識(shí)到了!希望公交公司對(duì)這種素質(zhì)差司機(jī)進(jìn)行嚴(yán)肅處理,以杜絕隱患!",
"url":"https://people.rednet.cn/#/leaveMsgDetails?id=4225019"
}
6、刪除數(shù)據(jù)(document)
DELETE請(qǐng)求
http://192.168.31.210:9200/{索引}/{type}/{id}
例子:
http://192.168.31.210:9200/zl1/datatables/222
7、更新數(shù)據(jù)(先刪除再新增)
POST請(qǐng)求
http://192.168.31.210:9200/{索引}/{type}/{id}
例子:
http://192.168.31.210:9200/zl1/datatables/aaa
參數(shù)
{
"content":"哈哈哈哈"
}
這樣id為aaa的document的所有字段都會(huì)被清空,只有content有值
8、查詢
-
通過(guò)id查詢
GET請(qǐng)求
http://192.168.31.210:9200/{索引}/{type}/{id}
例子:
http://192.168.31.210:9200/zl1/datatables/aaa
返回:
{
"_index": "zl1",
"_type": "datatables",
"_id": "aaa",
"_version": 2,
"found": true,
"_source": {
"content": "哈哈哈哈"
}
}
-
通過(guò)關(guān)鍵詞查詢
POST請(qǐng)求
http://192.168.31.210:9200/{索引}/{type}/_search
例子:
http://192.168.31.210:9200/zl1/datatables/_search
參數(shù)
{
"query":{
"term":{
"title":"長(zhǎng)"
}
}
}
查詢title里有“長(zhǎng)“的結(jié)果。
注意:之前設(shè)置的"analyzer":"standard",所以漢字關(guān)鍵詞只能有一個(gè)漢字。
-
通過(guò)querystring查詢
POST請(qǐng)求
http://192.168.31.210:9200/{索引}/{type}/_search
例子:
http://192.168.31.210:9200/zl1/datatables/_search
參數(shù)
{
"query":{
"query_string":{
"default_field":"title",
"query":"長(zhǎng)沙市317公交車司機(jī)"
}
}
}
先分詞,然后分別查詢title字段里有"長(zhǎng)"、"沙"、"市"、"317"、"公"、"交"、"車"、"司"、"機(jī)"的結(jié)果。
-
fuzzy 模糊查詢
POST請(qǐng)求
http://192.168.31.210:9200/{索引}/{type}/_search
例子:
http://192.168.31.210:9200/zl1/datatables/_search
參數(shù)
{
"query":{
"fuzzy":{
"title":{
"value":"長(zhǎng)市沙",
"fuzziness":2
}
}
}
}
fuzziness調(diào)整次數(shù)。
-
另外的查詢方式
range 范圍查詢
wildcard 通配符查詢
9、分詞器
-
標(biāo)準(zhǔn)分詞器(standard)
GET請(qǐng)求
http://192.168.31.210:9200/_analyze?analyzer=standard&text=Checking the test.log from the elasticsearch log, I'm just continually getting the following
英文會(huì)被按照單詞為單位分詞。
http://192.168.31.210:9200/_analyze?analyzer=hanlp&text=我們是湖南電子科技職業(yè)學(xué)院2016屆的學(xué)生
中文則會(huì)按照單個(gè)漢字為單位分詞。
-
ik分詞器
ik_smart
GET請(qǐng)求
http://192.168.31.210:9200/_analyze?analyzer=ik_smart&text=我們是湖南電子科技職業(yè)學(xué)院2016屆的學(xué)生
分詞結(jié)果:我們、湖南、電子科技、職業(yè)學(xué)院、2016屆、學(xué)生
ik_max_word
GET請(qǐng)求
http://192.168.31.210:9200/_analyze?analyzer=ik_smart&text=我們是湖南電子科技職業(yè)學(xué)院2016屆的學(xué)生
分詞結(jié)果:我們、我、們、湖南、湖、南、電子科技、電子科、電子、電、子、科技、科、技、職業(yè)學(xué)院、職業(yè)、職、業(yè)、學(xué)院、學(xué)、院、2016、屆、學(xué)生、學(xué)、生
使用ik分詞器以后,搜索的時(shí)候關(guān)鍵詞查詢term和query_string查詢的時(shí)候,就不像standard那樣單個(gè)漢字為單位,也可以是詞語(yǔ)作為一個(gè)單位。
10、ElasticSearch集群
gossip協(xié)議
未完待續(xù)...