1. 避免使用腳本查詢來計算匹配。 推薦:建立索引時存儲計算字段。
2. 避免使用wildcard查詢(wildcard類似mysql中的like,和分詞完全沒有了關係)
3. 避免查詢大的結果集
4.增加 Refresh 時間間隔
為了提高索引性能,Elasticsearch 在寫入數據時候,採用延遲寫入的策略,即數據先寫到內存中,當超過默認 1 秒 (index.refresh_interval)會進行一次寫入操作,就是將內存中 segment 數據刷新到操作系統中,此時我們才能將數據搜索出來,所以這就是為什麼 Elasticsearch 提供的是近實時搜索功能,而不是實時搜索功能。
當然像我們的內部系統對數據延遲要求不高的話,我們可以通過延長 refresh 時間間隔,可以有效的減少 segment 合併壓力,提供索引速度。在做全鏈路跟蹤的過程中,我們就將 index.refresh_interval 設置為 30s,減少 refresh 次數。
同時,在進行全量索引時,可以將 refresh 次數臨時關閉,即 index.refresh_interval 設置為 -1,數據導入成功後再打開到正常模式,比如 30s。
http://10.167.200.195:9200/shoppinglogistics/_settings
{
"index" : {
"refresh_interval" : "30s"
}
}
5.在使用 Elasticsearch 過程中,應儘量避免大翻頁的出現。
正常翻頁查詢都是從 From 開始 Size 條數據,這樣就需要在每個分片中查詢打分排名在前面的 From + Size 條數據。協同節點收集每個分配的前 From + Size 條數據。協同節點一共會受到 N * ( From + Size )條數據,然後進行排序,再將其中 From 到 From + Size 條數據返回出去。
如果 From 或者 Size 很大的話,導致參加排序的數量會同步擴大很多,最終會導致 CPU 資源消耗增大。
6. Mapping中能設置成keyword ,優先設置為keyword。這樣lunece就不會大量的分詞,加長插入時間。
7. Elasticsearch兩種垃圾回收cms 適合內存8g以下的高內存也能用G1 需要內存比較高
################################CMS 回收
## GC configuration
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70 ##是指設定CMS在對內存佔用率達到70%的時候開始GC(因為CMS會有浮動垃圾,所以一般都較早啟動GC);
-XX:+UseCMSInitiatingOccupancyOnly
############################ G1
##-XX:+UseG1GC
##-XX:MaxGCPauseMillis=50 ##是控制預期的最高GC時長,默認值為200ms,如果線上業務特性對於GC停頓非常敏感,可以適當設置低一些。但是 這個值如果設置過小,可能會帶來比較高的cpu消耗。
####################################
核心類型
字符串:string,string類型包含 text 和 keyword。
text:該類型被用來索引長文本,在創建索引前會將這些文本進行分詞,轉化為詞的組合,建立索引;允許es來檢索這些詞,text類型不能用來排序和聚合。
keyword:該類型不需要進行分詞,可以被用來檢索過濾、排序和聚合,keyword類型自讀那隻能用本身來進行檢索(不可用text分詞後的模糊檢索)。
數指型:long、integer、short、byte、double、float
日期型:date
布爾型:boolean
二進制型:binary
{
"settings": {
"number_of_shards": 6,##創建分片數
"index.refresh_interval": "30s"##Refresh 時間間隔不寫的話默認是1
},
"mappings": {
"shoppinglogistics": {
"properties": {
"logisticsId": {
"type": "long"
},
"logisticsName": {
"type": "text",
"analyzer": "ik_smart",##分詞查詢
"search_analyzer":"ik_smart"##分詞查詢
},
"logisticsImgUrl": {
"type": "text"
},
"contactNumber": {
"type": "text"
},
"contactNamne": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer":"ik_smart"
},
"remarksDesc": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer":"ik_smart"
},
"logisticsStatus": {
"type": "text"
},
"createTime": {
"type": "text"
},
"createUserId": {
"type": "long"
},
"updateTime": {
"type": "text"
},
"updateUserId": {
"type": "long"
}
}
}
}
}
閱讀更多 泡泡糖就是糖 的文章
關鍵字: 中央處理器 ElasticSearch 數指型