mapping映射
主要類型:

-
同一index下,不同type中如果有相同filed;es進行mapping映射的時候,按照先寫進去的指定類型;比如同一index,包含的type中都有key1字段,如果第一次寫進去的是long類型,后面所有type中key1字段都按照long類型格式化。
- nested和array的區別


-
es中會把json數組平鋪存儲:"key":[{"a":1,"b":"abc"},{"a":2,"b":"xyz"}],es會把上面的數組存儲為:"key":{"a":[1,2],"b":["abc","xyz"]};所以如果我想的到當a>1的時候獲取b的值,是拿不到我們想要的結果的!
- 如果想要獲取到我們想要的結果,需要指定映射為“nested”類型
"key":{ "type":"nested", "property":{ "a":{"type":"long"} "b":{"type":"string"} } } - es默認不是這種格式,如果指定為nested類型,寫入和查詢的性能會受到影響!
-
如果單個term最大長度超過32kb(32766)不可修改,寫不進es
- 可以針對比較大的內容做正則提取,作為單獨字段存儲
-
ignore_above:20(允許寫入20個字節)
- 超過這個值可以寫進去es,但是無法搜索到(超過之后,寫進es不會做索引)

什么是DocValues?為什么要用DocValues ?
Elasticsearch cluster中的內存多半都被消耗在了field data(也就是我們常說的正排索引)上,field data主要用於:
- 按照字段排序(sort)
- 按照字段進行聚合(Aggregations)
- 過濾器,例如地理位置過濾
-
script排序中使用到某些字段
- http://www.tuicool.com/articles/B3QnQzE
對索引操作的一些優化
http://itindex.net/detail/54945-elasticsearch2.0--索引-優化
