本章将和大家分享 Elasticsearch 的一些基本操作。话不多说,下面我们直接进入主题。
settings属性可以设置索引库的一些配置信息,例如:配置分片数和副本数、配置自定义分词器等。其中分片数量只能在一开始创建索引库的时候指定,后期不能修改。副本数量可以随时修改。
mapping属性是对索引库中文档的约束,常见的mapping属性包括:
1)type:字段数据类型,常见的数据类型在上一章已经介绍过了,此处就不再做过多的描述了。
2)index:是否需要创建倒排索引,默认值为true,如果设置为false那么表明该字段不能被检索,不构建倒排索引。因此,需要根据具体的业务判断该字段将来是否需要参与检索,如果需要的话就设置为true,否则就设置为false。
3)analyzer:使用哪种分词器,一般结合text(可分词的文本)数据类型一起使用。
4)properties:该字段的子字段。
ES中通过Restful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和mapping的DSL语法如下:
PUT /索引库名称 { "mappings": { "properties": { "字段名":{ "type": "text", //分词 "analyzer": "ik_smart" //指定分词器 }, "字段名2":{ "type": "keyword", //不分词 "index": "false" //不创建倒排索引,不参与搜索 }, "字段名3":{ "type": "object", //对象类型 "properties": { "子字段": { "type": "keyword" } } }, // ...略 } } }
# 创建索引库 PUT /my_index { "mappings": { "properties": { "info":{ "type": "text", "analyzer": "ik_smart" }, "email":{ "type": "keyword", "index": false }, "name":{ "type": "object", "properties": { "firstName":{ "type":"keyword" }, "lastName":{ "type":"keyword" } } } } } }
运行结果如下所示:
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "my_index" }