你還不會ES的CUD嗎?

2021-10-09 17:48:57 字數 2661 閱讀 8871

近端時間在搬磚過程中對es進行了操作,但是對es查詢文件不熟悉,所以這兩周都在研究es,簡略看了《elasticsearch權威指南》,摸摸魚又是一天。

es是一款基於lucene的實時分布式搜尋和分析引擎,今天咱不聊其應用場景,聊一下es索引增刪改。

環境:centos 7,elasticsearch6.8.3,jdk8

(最新的es是7版本,7版本需要jdk11以上,所以裝了es6.8.3版本。)

下面都將以student索引為例

一、建立索引

put   

, "name":,

"age":}},

"birthday":,

"gender":,

"grade":}},

"class":}}

}}},"settings":

}

type屬性是text和keyword的區別:

(1)text在查詢的時候會被分詞,用於搜尋

(2)keyword在查詢的時候不會被分詞,用於聚合

index屬性是表示字串以何種方式被索引,有三種值

(1)analyzed:字段可以被模糊匹配,類似於sql中的like

(2)not_analyzed:字段只能精確匹配,類似於sql中的「=」

(3)no:欄位不提供搜尋

analyzer屬性是設定分詞器,中文的話一般是ik分詞器,也可以自定義分詞器。

number_of_shards屬性是主分片數量,預設是5,建立之後不能修改

number_of_replicas屬性時分片副本數量,預設是1,可以修改

建立成功之後會返回如下json字串

建立之後如何檢視索引的詳細資訊呢?

es6版本,索引之下只能有乙個型別,例如上文中的「_doc」。

es跟關係型資料庫比較:

二、修改索引

//修改分片副本數量為2

put /_settings

三、刪除索引

//刪除單個索引 

delete

//刪除所有索引

delete

四、預設分詞器standard和ik分詞器比較es預設的分詞器是standard,它對英文的分詞是以空格分割的,中文則是將乙個詞分成乙個乙個的文字,所以其不適合作為中文分詞器。

例如:standard對英文的分詞

//此api是檢視文字分詞情況的 

post

結果如下:

,,,,]}

對中文的分詞:

post 

結果如下:

,,,

,,,,,]}

ik分詞器是支援對中文進行詞語分割的,其有兩個分詞器,分別是ik_smart和ik_max_word。

(1)ik_smart:對中文進行最大粒度的劃分,簡略劃分

例如:

post 

結果如下:

,]}

(2)ik_max_word:對中文進行最小粒度的劃分,將文字劃分盡量多的詞語

例如:

post 

結果如下:

,,,

,,,,

,,,,

]}

ik分詞器對英文的分詞:

post 

結果如下:會將不重要的詞去掉,但standard分詞器會保留(英語水平已經退化到a an the都不知道是屬於什麼型別的詞了,身為中國人,這個不能驕傲)

,,,

]}

五、新增文件可以任意新增字段

//1是「_id」的值,唯一的,也可以隨機生成

post /_doc/1

六、更新文件

post /_doc/1/_update

}

七、刪除文件

//1是「_id」的值 

delete /_doc/1

上述就是簡略的對es進行索引建立,修改,刪除,文件新增,刪除,修改等操作,為避免篇幅太長,文件查詢操作將在下篇進行更新。

doc es 中type 你還不會ES的CUD嗎?

近端時間在搬磚過程中對es進行了操作,但是對es查詢文件不熟悉,所以這兩周都在研究es,簡略看了 elasticsearch權威指南 摸摸魚又是一天。es是一款基於lucene的實時分布式搜尋和分析引擎,今天咱不聊其應用場景,聊一下es索引增刪改。環境 centos 7,elasticsearch6...

docker容器你還不會嗎?趕緊學吧

前兩天有個朋友問我,發生腎麼事了?我說怎麼回事,給我發了幾張截圖,我一看,哦,原來是虛擬化軟體,有兩個類別,都很強,乙個完全模擬一台電腦,乙個完美利用資源,有乙個說是,我很強,硬體什麼的都能掌控,我說你死勁兒不好用,他不服氣,我說小朋友,你一台啟動速度和我十台啟動速度比比,他比不過,他說你這也沒用,...

你還不會建立jQuery外掛程式 ?

如何建立乙個jquery外掛程式 為什麼要建立jquery外掛程式 因為這樣 可以復用。我們有這樣乙個頁面,頁面上面有如下的文字 看原始碼 我們想要的效果是,當滑鼠移到鏈結的時候,用乙個浮動的div來顯示a標籤的title內容.這是通過js來完成的。假設有乙個方法tooltip 你只需要呼叫這個方法...