es-index操作

新建index

既可以通过post /index名  的形式先定义index,json串的内容可以是index定义包括,mapping,setting和alias等等 

也可以post  /index名/类型名  的形式在传入文档的时候自动定义index。json串就是文档的内容,如果index名能够匹配索引模板那么就会复用索引模板的定义,如果没有就会采用es默认的类型定义,es一般会定义成string类型。

查看index定义

get  index名

删除index

delete index名

查看index内容

post/get index名/type名/_search   json字符串可以是查询字符串

index别名设置

post    index名/_alias/别名

index别名与index删除和建立关联

post   /_aliases  json字符串为下面的定义形式

{
"actions": [
{
"remove": {
"index": "test0713",
"alias": "alias0712"
},
"add": {
"index": "test0712",
"alias": "alias0712"
}
}
]
}

修改index设置

put   /index名/_setting    json字符串为设置的定义,例如索引的主分片的数目,最大查询窗口等等,如果index名字为_all则表示当前所有的索引

映射操作

 mapping感觉是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置的,其它就是处理es里面数据的一些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好?和建立表结构表关系数据库三范式类似。

        在刚刚接触es的时候很多资料教程都不会直接上来先建立mapping映射,都是从一些示例入手很容易理解,那时没有建立映射es也是可以工作的,说明es很多地方都是有默认设置的,如果我们不设置字段类型那么将走默认类型。

  •         映射的新建、修改、删除

       让我们先来建一个library01的索引,然后再该索引上面添加映射,其它也可以在建立索引时同时初始化映射关系,先建后建都是一样的。

如上面library01是我新建的索引,从右侧可以看出来它的mapping映射是空值,我们并没有建映射,在library01中新建映射 如

        已经为索引建立了映射,可以用上图中get命令查看各种索引,可以从一个索引中查看某个或某几个类型的映射,也可以查看集群中所有或指定类型索引,用起来还是很方便的。

        新建完还可以删除映射,通过这些命令:

        最后就是更新操作了,其它更新操作还是比较麻烦的,es中想要给一个已经建好映射的索引改变映射结果,即使改变一个字段类型都是不支持的,需要重新建立索引以及映射结构,然后把以前的数据导入到新建的索引结构中去,完成改变映射结构的目的。

        步骤:

1.给已有的索引定一个别名,并指向该别名

2.新建一个新的索引,新的映射结构

3.将别名指向新的索引,取消旧的索引与别名之间的关联

        通过这几部即可达到重新改变映射结构的内容,例如我们想改变library01的映射中price字段的类型由现有的double变为integer类型。

        从上面图中可以看出来price 类型已经是integer类型了,客户端不需要知道变化也不需要停止es服务,在必要的时候可以使用这个方法。

索引模板

模板并不属于某个具体的索引,它会对满足索引模板正则表达式的索引名直接使用该模板定义,而不必对每个索引进行定义。

模板的过程包括“settings”,"template","mapping","aliases","order"这几项的设置,其中order的作用在于规定模板的使用顺序,如果一个index同时匹配多个模板,则以其中order值较大的为准。但是实际并不是这样的,改变order大小会造成index模板的加载失败和冲突,要特别小心。

模板由模板名和模板正则匹配表达式两项,模板名只代表该模板定义的名字,模板正则表达式则用于匹配其适用的索引名称。

原文地址:https://www.cnblogs.com/suntp/p/9474955.html