elasticsearch —— 基本操作命令

一直以来没有时间细细的看elasticsearch的命令操作。最近公司需要做一个直播聊天系统。我就想把聊天内容放到elasticsearch里面。乘这个机会来整理一下基本操作命令。

注: 命令语法是基于kibana的插件sense的格式。

  • 基本命令
    • 索引操作
    • 类型mapping添加
  • curd
  • 搜索、过滤
  • 其他

基本命令

1、 查看elasticsearch信息

会返回一些elasticsearch的基本信息。
比如说elasticsearch会自动帮助本节点取的名字,以及集群名字,版本信息,基于lucene的版本信息,以及口号You Know, for Search

索引操作

2、创建索引

重复创建会报错。

创建时还可以初始化一些设置。

number_of_shards表示分片数,初始化后不能修改。
number_of_replicas表示副本数,初始化后可修改。

副本是为了保障数据的可靠性,当一个节点的主分片丢失,elasticSearch可以把任意一个可用的分片副本推举为主分片。所以elasticSearch会默认创建一个副本。

分片则是为了提高查询的吞吐量。一个索引会分成多个分片存储。分片会带来额外的分割和合并的损耗,理论上分片数越少,搜索的效率越高

分片数量推荐: 分片数*副本数=集群数量

所以如果是单机的话,可以设置为1个分片,1个副本。

3、 修改索引设置

4、查看索引

会返回一写索引的基本信息。如: 别名、mapping、设置信息。

5、 删除索引

重复删除与会报错。

类型操作

6、 创建type并且插入数据

当然,同一个索引下可以创建多个不同的类型。这写类型的mapping可以不一致。

7、 创建type并且插入数据

上面2个创建都是通过直接插入数据,自动映射出mapping。我们也可以手动设置mapping。以及关闭自动映射mapping

8、 创建type但是不插入数据

通过设置配置文件./config/elasticsearch.yml 来关闭自动映射mapping。如果没有的话直接添加即可。

9、 修改类型

注: elasticsearch2.x版本后取消了直接删除类型的操作。

curd

10、 添加数据

11、 根据ID获取数据

12、 更新整个文档

13、 局部更新

14、 删除文档

15、 批量获取

也可以通过ID来获取,如果不存在,该IDfoundfalse

16、 批量操作

bulk API允许我们使用单一请求来实现多个文档的createindexupdatedelete

这种格式类似于用”\n”符号连接起来的一行一行的JSON文档流
格式如下:

注意: 由于delete操作没有报文,所以报文不需要填写。具体如下:

搜索和过滤

为了方便测试我在type_3中添加了4条测试数据。

17、 查询数据所有数据

18、 分页搜索

19、 排序查询

20、 多字段排序

按年龄升序,在年龄相同的情况下,按手机号倒序。

条件查询

21、空查询,即无条件查询

可以简化为

22、 按谈条件查询

22、多条件搜索

mysql相比较的话,
must 类似 and xxx = xxx
must not 类似 and xxx != xxx
should 类似 or

23、 and 条件 age = 19 and name 包含 4

24、 or 条件 age = 19 or name 包含 John

25、 (name 包含 4 and age = 19) or name 包含 3

过滤查询

过滤查询与条件查询的语法类型,只是把query替换成了filter

那么 filterquery 有什么区别么?

主要的区别:
1、 filter的结果将会被缓存,而query的结果。
2、 filter出来的记过_score字段全部为1,而query则计算相关性,为每个结果打分。
3、运用场景,如果你的查询是范围和类型比较粗大的,用filter ! 如果是那种精准的,就用query来查询。

26、 filter基本操作

27、 范围查询

28、 查询test索引里存在age字段的文档

29、查询test索引里不存在age字段的文档

30、term过滤

term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed的字符串

31、 多个字段匹配过滤同一个关键词

搜索过滤结合使用

32、 filtered查询

filtered查询的有点事:借助于filter的速度可以快速过滤出文档,然后再由query根据条件来匹配。推荐使用。

其他操作

33、 获取文档条数

当然查询颗粒度可以更粗或更细。

34、 查看所有基本信息

35、 查看mapping