快速入门ElasticSearch(上)( 四 )


其实你还可以发现这些方框有的边框颜色粗 , 有的浅 , 那是因为粗的是主分片 , 浅的是分片的备份 。 其实上面这种是非结构化的创建 , 其实还有结构化的创建 。 那么如何确定某个索引是结构化还是非结构化的呢?可以借助于Head插件来完成 , 点击索引的信息按钮 , 然后点击索引信息按钮 , 如下所示:
快速入门ElasticSearch(上)文章插图
然后会弹出一个页面 , 注意这里面的"mappings"字段 , 它是结构化的关键词 , 如果后面的内容是空的 , 则表示它是非结构化的索引 。 也就是说上面我们创建的movie其实是一个非结构化的索引:
快速入门ElasticSearch(上)文章插图
那么问题来了 , 如何创建结构化的索引呢?同样可以借助于head插件 , 点击右上角的“复合查询”按钮 , 然后选择POST方式:
快速入门ElasticSearch(上)文章插图
并修改接口为movie/action/_mappings , 然后在里面新增如下代码:
{"action": {"properties": {"title": {"type": "text"}}}
快速入门ElasticSearch(上)文章插图
之后查看一下首页 , 可以发现之前的“mappings”字段里面已经显示了刚才添加的信息:
快速入门ElasticSearch(上)文章插图
尽管使用Head插件可以结构化创建 , 但是对于JOSN的书写并不太友好 , 此时我们可以使用Postman这一工具来进行创建 , 但是需要开发者自己书写一些基础配置信息 , 如"settings"等 , 之后才能编写“mappings”关键字等信息 , 如下所示:
{ "settings": {"number_of_shards": 3,"number_of_replicas": 1 }, "mappings": {"novel": {"properties": {"name": {"type": "text"},"isbn": {"type": "keyword"},"price": {"type": "integer"},"published": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"}}} }}之后点击提交即可 , 结果如下所示 , 注意使用PUT方法用于新增数据(ES6.x系列要求一个index只能存储一种type):
快速入门ElasticSearch(上)文章插图
之后刷新首页 , 可以看到右侧多出了一个book的索引 , 然后查看该索引的信息可以发现该索引中的"mappings"关键字中的信息就是之前我们通过Postman创建的:
快速入门ElasticSearch(上)文章插图
数据插入在学完了如何创建索引之后 , 接下来开始学习如何插入数据 , 在ElasticSearch中 , 插入分为两种:“指定文档id插入”和“自动产生文档id插入” 。 这里的文档id它是一个唯一索引值 , 指向文档数据 。 接下来学习如何使用Postman工具来插入数据 , 选择PUT方法 , 并输入接口为/book/novel/1 , 请注意这里的book为索引 , novel为类型 , 1是文档的id , 这个文档id用于唯一标识文档 , 然后书写如下JSON信息:
快速入门ElasticSearch(上)文章插图
然后点击确定 , 刷新首页并点击上方的数据预览 , 可以看到我们之前的数据就已经成功插入了:
快速入门ElasticSearch(上)文章插图
同时可以看到对于book这一索引来说 , 其docs的数量为1 , 它表示book索引下所有的文档的数量:


推荐阅读