Elasticsearch 入门到高手的成长阶梯-索引的基本操作(1)

1. 创建索引

Elasticsearch中索引的名称,必须符合以下要求:

  • 字母只能够是小写字母
  • 不能够包含特殊字符,如\, /, *, ?, ", <, >, |, ` ` , ,, #等
  • 名称不能够以英文的中划线“-”、下划线“_”以及加号“+”开头
  • 名称不可以是“.”或“..”
  • 名称的长度否以超过255个字节

 

  1. 创建全部使用默认参数的索引

索引的创建,需要使用PUT方法,以下是一个最简单的索引创建语句:

PUT /new_index

{}

这将会创建一个完全使用默认配置为为new_index的索引,索引的主分片数和副本数默认都是1个,这通常是不能够满足生产环境真实的业务需求,此时就需要在建立索引之前规划好需要的主分片数和副本数,然后在建立索引时指定这些参数。

  1. 2 创建指定分片和副本的索引

下面建立一个具有5个主分片及每个主分片有一个副本的示例,如下所示:

PUT /new_index

{

    "settings" : {

        "number_of_shards" : 5,

        "number_of_replicas" : 1

    }

}

索引的副本,后面可以根据业务情况,通过API执行动态调整,如下将上面建立的索引的副本数设置为2个:

PUT /new_index/_settings

{

    "number_of_replicas" : 2

}

索引的主分片数,后面是不可以通过设置动态调整的,只有通过建立新的索引设置新的主分片数,然后重新建立索引的方式达到增加主分片数的方式。因而在建立索引之前,需要根据该库的业务使用情况,先规划好主分片数,否则后期就只有通过reindex的方式调整主分片数。

  1. 创建带有mapping的索引

Mapping就是用来指定索引中字段使用的类型,如数字、字符还是日期等,还可以控制字段被索引的方式,如是否需要被分析、使用什么样的分析器等。

以下示例索引,包含了三个字段,并通过mapping分别给其指定的不同的字段类型:

PUT /new_index

{

    "settings" : {

        "number_of_shards" : 2,

"number_of_replicas" : 2

    },

    "mappings" : {

        "properties" : {

            "name" : { "type" : "text" },

"age" : { "type" : "short" },

"birth_date" : { "type" : "date" }

        }

    }

}

 

2.删除索引

删除索引使用DELETE方法,可以一次删除一个索引,如下:

DELETE /new_index

也可以通过通配符*匹配一次删除多个索引

DELETE /new_index*

不过使用通配符删除,增加了方便性,但同时也增加了危险性,在2.3.1这一章节中,有谈到如何控制是否允许在删除索引的时候使用通配符。

3.获取索引的信息

获取索引的信息使用GET方法,会返回这个索引本身的别名、mapping以及相关设置等信息,如下:

GET /new_index

响应:

{

  "new_index" : {

    "aliases" : { },

    "mappings" : {

      "properties" : {

        "age" : { "type" : "short" },

        "birth_date" : { "type" : "date" },

        "name" : { "type" : "text" }

      }

    },

    "settings" : {

      "index" : {

        "creation_date" : "1556753099705",

        "number_of_shards" : "2",

        "number_of_replicas" : "3",

        "uuid" : "Vh2Ne7srT7-gh_dQaWlF8Q",

        "version" : { "created" : "7000099" },

        "provided_name" : "new_index"

      }

    }

  }

}

4. 判断索引是否存在

当执行文档索引时,如果目标索引不存在,Elasticsearch会自动创建该索引,通常情况下这是一个好的处理逻辑。但是有时不希望Elasticsearch自动创建不存在的索引,以便于做一些的逻辑上的控制,此时就需要判断被操作的索引是否存在了,判断索引是否存在,需要使用HEAD方法,如下:

HEAD /new_index

响应:

200 - OK

表示索引存在。

如响应:

404 - Not Found

则表示索引不存在。

5. 开/关索引

当需要对索引做一些关键的设置时,如为索引增加自定义分析器,就需要先关闭索引才可以执行。Elasticsearch提供了_open和_close API允许执行对索引的开和关的操作,该操作需要使用POST方法。

5.1 关闭索引

POST /new_index/_close

响应

{

  "acknowledged" : true

}

表示索引关闭成功。

 

5.2 打开索引

POST /new_index/_open

响应

{

  "acknowledged" : true,

  "shards_acknowledged" : true

}

表示索引打开成功。

转载于:https://www.cnblogs.com/fenglibing/p/11013962.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对象的深度复制

首先什么是深度复制&#xff1f;什么又是浅复制&#xff1f; 百度告诉我---------------> 浅复制&#xff1a;将一个对象复制后&#xff0c;基本类型都会重新创建&#xff0c;而引用类型指向的还是原对象所指的引用&#xff1b; 深复制&#xff1a;讲一个对象复制后&…

java 判断int类型为空

int id 10; if("0".equals(String.valueOf(id)) || "null".equals(String.valueOf(id)) || id < 0) return false;比如&#xff1a; "0".equals(String.valueOf(定义的int类型参数)) 判断int类型不能为空或不能小于等于0 也可以转换为String…

P1-0:项目框架搭建

后台java&#xff0c;前端用html,js &#xff0c;数据库用mysql,云数据库 构建BS结构项目 转载于:https://www.cnblogs.com/superisland/p/11016113.html

2.MySQL中的索引

索引就像树的目录&#xff0c;是为了更快的找到所要找的内容&#xff08;数据&#xff09;。MySQL中&#xff0c;索引是在存储引擎层实现的&#xff0c;不同的存储引擎有不同的索引模型&#xff0c;如innodb是采用的是B树的索引模型&#xff0c;本篇主要以innodb存储引擎的索引…

python学习-10 运算符1

1.加&#xff0c;减-&#xff0c;乘*&#xff0c;除/ 例如&#xff1a; a 1 b 2 c a b print(c) 运算结果&#xff1a; 3Process finished with exit code 0 a 1 b 2 c a - b print(c) 运算结果&#xff1a; -1Process finished with exit code 0 a 1 b 2 c a * b pr…

如何在idea中使用Mybatis-generator插件快速生成代码

代码下载地址&#xff1a;https://download.csdn.net/download/hua_faded/10671547 一、配置Maven pom.xml 文件 在pom.xml增加以下插件&#xff1a; <build><finalName>zsxt</finalName> <plugins> <plugin> <groupId>org.mybatis.genera…

游戏开发-cocos creator技巧-cc.Component.EventHandler自定义click事件

cocos creator有两种给按钮注册click事件的方式&#xff0c; EventHandler的方式虽然有点麻烦&#xff0c;但是比较灵活&#xff0c;使用时候注意每个参数必须填写正确&#xff0c;否则click时候会报null的错误第一种 node_level.on(cc.Node.EventType.TOUCH_START, this.on_pa…

Java 泛型(1):基本原理

1.1 擦除 15.7例子 Java的泛型是同伙擦除来实现的&#xff0c;在泛型代码内部&#xff0c;无法获得任何有关泛型参数类型的信息(这一点有别于C等实现)&#xff0c;这意味着你在使用泛型时&#xff0c;无法知道任何类型信息&#xff0c;只知道你在使用一个对象&#xff0c;…

21-MySQL-Ubuntu-快速回到SQL语句的行首和行末

行首: Ctrl A 行末:Ctrl E转载于:https://www.cnblogs.com/summer1019/p/11043692.html

django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

CBV加装饰器 第一种  method_decorator(装饰器&#xff09;  加在get上 第二种  method_decorator(login_auth,nameget)  加在类上 第三种  method_decorator(login_auth)  加在dispatch上  3.7的要return super().dispatch def login(request):if request.metho…

Dubbo理论知识

本文是作者根据官方文档以及自己平时的使用情况&#xff0c;对 Dubbo 所做的一个总结。如果不懂 Dubbo 的使用的话&#xff0c;可以参考我的这篇文章《超详细&#xff0c;新手都能看懂 &#xff01;使用SpringBootDubbo 搭建一个简单的分布式服务》 Dubbo 官网&#xff1a;http…

外观模式(facade)

外观模式是为了解决类与类之间的依赖关系的&#xff0c;像spring一样&#xff0c;可以将类和类之间的关系配置到配置文件中&#xff0c;而外观模式就是将他们的关系放在一个Facade类中&#xff0c;降低了类类之间的耦合度&#xff0c;该模式中没有涉及到接口&#xff0c;看下类…

套接字TCP控制台程序客户端代码示范

套接字TCP控制台程序客户端代码示范 转载于:https://www.cnblogs.com/txwtech/p/11056770.html

widows下nignx的使用

nignx在Linux环境下可以大展身手&#xff0c;在widows环境下也可以启动一定的效果&#xff0c;但是没有linux用的好。 Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。 什么是反向代理&#xff1f; 反向代…

享元模式(Flyweight)

享元模式的主要目的是实现对象的共享&#xff0c;即共享池&#xff0c;当系统中对象多的时候可以减少内存的开销&#xff0c;通常与工厂模式一起使用。 FlyWeightFactory负责创建和管理享元单元&#xff0c;当一个客户端请求时&#xff0c;工厂需要检查当前对象池中是否有符合条…

redo

在innodb存储引擎中&#xff0c;事务日志通过重做(redo)日志文件和InnoDB存储引擎的日志缓冲(InnoDB Log Buffer)来实现。当开始一个事务时&#xff0c;会记录该事务的一个LSN(Log Sequence Number&#xff0c;日志序列号)&#xff1b;当事务执行时&#xff0c;会往InnoDB存储引…

迭代子模式(Iterator)

顾名思义&#xff0c;迭代器模式就是顺序访问聚集中的对象&#xff0c;一般来说&#xff0c;集合中非常常见&#xff0c;如果对集合类比较熟悉的话&#xff0c;理解本模式会十分轻松。这句话包含两层意思&#xff1a;一是需要遍历的对象&#xff0c;即聚集对象&#xff0c;二是…

ES6基础之——对象表达式

这里定义了两个变量&#xff0c;一个是dessert&#xff0c;一个是drink,let dessertcake,drinkorange;一、根据两个变量的值去定义一个对象&#xff0c;这个对象叫food,对象里面属性跟变量的名字是一样的,属性值对应上面的变量let dessertcake,drinkorange; let food{ dessert:…

前台获取元素节点

$("#id").childNodes;//获取id的全部子节点&#xff1b; $("#id").parentNode;//获取id的父节点&#xff1b; $("#id").nextSibling;//获取id的下一个兄弟节点 $("#id").previousSibling;//获取id的上一个兄弟节点 $("#id")…

oracle查看执行计划入门

基于Oracle的应用系统很多的性能问题都是由应用系统的SQL性能低劣引起的&#xff0c;因此SQL的性能优化非常重要。要分析与优化SQL的性能&#xff0c;一般是通过查看该SQL的执行计划&#xff0c;然后通过执行计划有针对性地对SQL进行相应的优化。 什么是执行计划&#xff08;Ex…