mapping文件中一些参数的设置需要注意的点
- copy_to, 不能通过中间值来复制, 如不能把field1 copy 给field2, 然后再通过field2 copy给field3. 但是可以同时将field1 copy给field2和field3
- doc_values: 如果确定不需要通过该字段进行排序或聚合, 就将该值设置为false. 能节省磁盘空间. text 类型的字段不支持该值(所以如果想让该字段支持排序或聚合, 就应该设置一个innerfield,类型为keyword)
"mappings": {
"properties": {
"my_field": {
"type": "text",
"fields**": {
"keyword": {
"type": "**keyword**" }}}}}
- dynamic: 是否允许动态添加新字段(不在mapping文件中的字段), false(不允许), true(允许), strict(报错)
- fields:(multi-field) a string field could be mapped as a text field for full-text search, and as a keyword field for sorting or aggregations, 另外一种用途是可以将该字段以两种不同的分词器进行索引
- normalizer: 在index和搜索的时候对keyword类型的数据进行normalize处理.
"analysis": {
"normalizer": {
"my_normalizer": {
"type": "custom",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
- Asciifolding: 作用是去掉变音符号(如法语)并且能把Unicode字符转化为ASCII来表示.
- store: 是否存储该字段的原始值.在某些情况下是有用的, 如果你有一个带有标题、日期和一个非常大的内容字段的文档,你可能希望只检索标题和日期,而不必从一个大的源字段中提取这些字段, 如把title和date设置为:store: true.搜索的时候只检索title和date GET my_index/_search{ "stored_fields": [ "title", "date" ] }
- similarity: 相似度算法, 共有三个值, BM25, classic(tf/idf算法), boolean:当full-text ranking不需要的时候, 并且分数只和是否匹配相关. boolean的similarity会给term一个和query的boost相等的分数.
其他ES相关文章
- ElasticSearch mappings文件字段介绍
- ElasticSearch analyzer分析器加载顺序
- ElasticSearch优化点简述
- ES倒排索引
- ElasticSearch与Solr对比