Elasticsearch的一些基礎使用

以前整理了一份關於工作時elasticsearch的簡單日誌,有的時候偶爾能用到,放到csdn上,這個只適合用過了突然忘了的時候查找

put 更新
post 提交
get 查詢
delete 刪除

explain GET /gb/tweet/_validate/query?explain 查詢不合法原因

query 評分查詢
filter 過濾查詢

match 分詞查詢
match_phrase 包含所有分詞的查詢
slop :1 可以少匹配一個(或多個)分詞
multi_match 多字段匹配,滿足一個即可
match_all 查詢所有

type: best_fields 完全匹配評分比較高
type: most-fields 多字段匹配評分較高
type: cross_fields 分詞詞彙分配到不同字段

term 完全匹配
"value"可以查數組
terms 多關鍵詞完全匹配
bool 組合查詢
must[] 必須匹配
must_not 必須不匹配
should 滿足這些語句中的任意語句,將增加 _score ,否則,無任何影響。它們主要用於修正每個文檔的相關性得分

fuzzy 模糊查詢
value 查詢關鍵字
boost 查詢權值,默認1.0
min_similarity:設置匹配的最小相似度,默認值0.5
prefix_length:指明區分詞項的共同前綴長度,默認是0

orderTime 時間字段查詢

GET _nodes?filter_path=.mlockall 查詢集羣節點是否禁用內存交換(swapping)
GET _nodes/stats/process?filter_path=
.max_file_descriptors 查詢集羣節點的最大文件描述符

index:
no 不索引
analyzied 分詞索引
not_analyzied 關鍵詞索引

store:
yes 存儲
no 不存儲

_source: 默認存在,索引原始內容
enabled :true / false
exclides 不包含的字段
includes 包含的字段

_all域:默認定義
enabled :false
include_in_all:false 不加入_all域

settings是修改分片和副本數的。
“settings”: {
“analysis”: { # 分詞設置,可以自定義
“char_filter”: {}, #char_filter 關鍵字
“tokenizer”: {}, #tokenizer 關鍵字
“filter”: {}, #filter 關鍵字
“analyzer”: {} #analyzer 關鍵字
}
//靜態設置:只能在索引創建時或者在狀態爲 closed index(閉合的索引)上設置

#使用時去index即可
index.number_of_shards //主分片數,默認爲5.只能在創建索引時設置,不能修改
index.shard.check_on_startup //是否應在索引打開前檢查分片是否損壞,當檢查到分片損壞將禁止分片被打開
false //默認值
checksum //檢查物理損壞
true //檢查物理和邏輯損壞,這將消耗大量內存和CPU
fix //檢查物理和邏輯損壞。有損壞的分片將被集羣自動刪除,這可能導致數據丟失

index.routing_partition_size //自定義路由值可以轉發的目的分片數。默認爲 1,只能在索引創建時設置。此值必須小於index.number_of_shards

index.codec //默認使用LZ4壓縮方式存儲數據,也可以設置爲 best_compression,它使用 DEFLATE 方式以犧牲字段存儲性能爲代價來獲得更高的壓縮比例。

//動態設置
index.number_of_replicas //每個主分片的副本數。默認爲 1。
index.auto_expand_replicas //基於可用節點的數量自動分配副本數量,默認爲 false(即禁用此功能)
index.refresh_interval //執行刷新操作的頻率,這使得索引的最近更改可以被搜索。默認爲 1s。可以設置爲 -1 以禁用刷新。
index.max_result_window //用於索引搜索的 from+size 的最大值。默認爲 10000
index.max_rescore_window // 在搜索此索引中 rescore 的 window_size 的最大值
index.blocks.read_only //設置爲 true 使索引和索引元數據爲只讀,false 爲允許寫入和元數據更改。
index.blocks.read // 設置爲 true 可禁用對索引的讀取操作
index.blocks.write //設置爲 true 可禁用對索引的寫入操作。
index.blocks.metadata // 設置爲 true 可禁用索引元數據的讀取和寫入。
index.max_refresh_listeners //索引的每個分片上可用的最大刷新偵聽器數

Mapping,就是對索引庫中索引的字段名稱及其數據類型進行定義,類似於mysql中的表結構信息。不過es的mapping比數據庫靈活很多,它可以動態識別字段。一般不需要指定mapping都可以,因爲es會自動根據數據格式識別它的類型,如果你需要對某些字段添加特殊屬性(如:定義使用其它分詞器、是否分詞、是否存儲等),就必須手動添加mapping。

analyzer :分詞器
whitespace 空格分隔符
simple
stop 默認
keyword不分詞

“dynamic”:默認true 插入新數據 可以作爲檢索條件,會改變表結構
“dynamic”:false 可以插入新列數據,但不能作爲檢索條件,不會改變表結構
“dynamic”:“stric”不符合表結構,不允許插入

字段類型概述
一級分類 二級分類 具體類型
核心類型 字符串類型 text,keyword
整數類型 integer,long,short,byte
浮點類型 double,float,half_float,scaled_float
邏輯類型 boolean
日期類型 date
範圍類型 range
二進制類型 binary
複合類型 數組類型 array
對象類型 object
嵌套類型 nested
地理類型 地理座標類型 geo_point
地理地圖 geo_shape
特殊類型 IP類型 ip
範圍類型 completion
令牌計數類型 token_count
附件類型 attachment
抽取類型 percolator

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