1.创建删除
创建: put /myidnex { “setting”:{}, “mapping”:{} } 防止自动创建:可以在elasticsearch.yml中添加action.anto.create_index:false 删除: delete /myindex1,myindex2 delete /_all
2.索引设置
number_of_shards主分片数,默认5,索引创建后不能更改
number_of_replicas复制分片数,默认1,随时可以更改
3.配置分析器
默认的standard不予讨论。
4.自定义分析器
再次回顾一下分析器:
(1)字符过滤器:过滤一些标签或其他字符
(2)分词器:譬如ik
(3)表征过滤:譬如大写转小写,停用词
建议自定义分析器
"analyzer":{
"my_analyzer": {
"type": "custom",
"char_filter": [ "html_strip","&_to_and" ],
"tokenizer": "standard",
"filter": [ "lowercase","my_stopwords" ]
}
}
5.映射
Lucene没有映射的概念,映射是es将复杂的json文档映射成lucene需要的扁平化数据的方式。
为了保证你不会遇到这些冲突,建议在同一个索引的每一个类型中,确保用同样的方式映射同名的字段
6.根对象
元数据字段以下划线开头,_type,_id,_source
7.source
默认情况下数据json格式保存在其中,在写入硬盘之前会压缩。
当映射需要改变,需要重建索引,可以直接在es中操作。
如想禁用:
"mappings": {"my_type": { "_source": { "enabled": false } } }
8._all字段
Query_string默认采用它来查询
禁用语句
PUT /my_index/_mapping/my_type
{
"my_type": {
"_all": {"enabled": false }
}
}
通过include_in_all可以控制字段是否被包含在_all中,默认true
一般做法:先完全禁用include_in_all,然后再选定字符串上启用它。
_all字段相当于一个新字段,采用默认的分析器,与组成它的字段所设置的分析器无关,可能原因:每个字段设置的可能不一样。你可以自己配置_all字段的分析器.
9.文档id
_uid:_type 和 _id 连接成的 type#id
_uid默认被保存和索引的,_type默认被索引但不保存,_id和_idnex既没有索引也没有存储,他们并不是真实存在的。
_id可以被指定:
PUT /my_index
{
"mappings": {
"my_type": {
"_id": {
"path":"doc_id" <1>
}
}
}
}
这种方式在bulk请求有轻微的性能影响。
10.动态映射
Dynamic:true自动添加字段,默认
false忽略字段
strict当遇到位置字段抛出异常
11.自定义动态映射
应用之一:日期检测
小知识:日期检测可以通过在根对象上置 date_detection 为 false 来关闭;
模板实例,可单独研究,应用多:
PUT/my_index
{
"mappings": {
"my_type": {
"dynamic_templates": [
{ "es": {
"match": "*_es", <1>
"match_mapping_type": "string",
"mapping": {
"type": "string",
"analyzer": "spanish"
}
}},
{ "en": {
"match": "*", <2>
"match_mapping_type": "string",
"mapping": {
"type": "string",
"analyzer": "english"
}
}}
]
}}}
12.默认映射
_default_映射是定义索引级别动态模板的好地方。
13.重建索引数据
Mapping可以给索引添加新的类型或类型添加新的字段,但不能添加新的分析器或修改已有字段。
为了更高效的索引旧索引中的文档,用scan-scoll来批量取旧索引的文档,然后将通过bulk API来将它们推送给新的索引。
GET/old_index/_search?search_type=scan&scroll=1m
{
"query": {
"range": {
"date": {
"gte": "2014-01-01",
"lt": "2014-02-01"
}
}
},
"size": 1000
}
上面的语句会生成一个
_scroll_id,根据这个id取得数据,导入新索引中,重建索引就这简单。(_scroll_id 可以在body或者URL里传递,也可以被当做查询参数传递)。
14.别名
切换、分类(应广泛使用索引别名),原子化操作索引迁移
POST /_aliases { "actions": [ { "remove": { "index": "my_index_v1", "alias": "my_index" }}, { "add": { "index": "my_index_v2", "alias": "my_index" }} ] }
本文出处:http://blog.csdn.net/shan1369678/article/details/51455315