Elasticsearch開發注意點

  • 前言

在最近一段關於ES的開發過程當中,難免踩了不少坑,如今我把一些注意點記錄下來。性能

  • 注意點

根據碰到的時間依次列舉:code

1.字段類型

字段類型必定要在創建索引的時候就肯定, 由於一旦創建索引以後,索引中的一些字段類型是不容許修改,若是必定要修改,只能從新創建索引,很是噁心。所以必定要注意字段類型。索引

同時,字段類型最好本身指定來創建,儘可能不要使用自動創建索引。舉個例子,你的字段類型多是Bigdecmal,可是他默認會是float。那麼坑爹的點就來了,一旦你進行統計的SUM操做,你會發現獲得的結果帶了不少的小數。那是由於float轉成double形成精度缺失,這裏最好的解決方法就是不要讓類型爲float。內存

2.父子關係

在創建索引的時候,應該要理清索引之間的索引關係。如要進行父子文檔關聯的,應在創建索引的時候就要考慮到,否則後面只能重建索引。(一些常常變更的字段可能只能經過父子文檔來進行查詢)開發

3.冗餘字段

爲了追求高效的搜索速度,在ES中咱們應該是能避免連表就避免連表。由於使用父子文檔來進行搜索,會影響搜索的性能。所以若是是一些不會變更的字段,而且搜索的時候須要的一些在其餘表裏面的字段可能冗餘進來。這樣搜索的時候,能夠直接查詢出來。文檔

4.重建索引

通過驗證,es能夠新增字段,可是不能刪除字段,修改字段,修改字段類型。因此要想上訴的一些不支持的操做,只能經過reindex重建索引來解決搜索

5.深度搜索

ES對深度搜索支持不是很好,因爲他自己是將數據全放入內存來保證數據搜索的快速性。那麼問題也來了,內存必有上限,當分頁深度搜索的時候他是將以前的全部數據都放入內存才行。所以,當你使用ES來做爲查詢的時候,最好禁用深度搜索分頁

未完待續。。。。float

相關文章
相關標籤/搜索