elasticsearch在centos上的学习过程2

一、概念理解

集群:有一个或多个节点,节点通过集群名称来加入对应的集群,因此同一个集群的节点elasticsearch.yml文件中的集群名称必须一致。

索引:相同属性的文档集合,必须为英文字母小写来命名。
类型:索引可以定义一个或多个类型,文档必须属于一个类型。
文档:被索引的基本数据单位。
           举例:索引类型文档三个的关系就类似 : 数据库(索引) > 表(类型) > 记录(文档)

           又如: 索引分等索引 -->  而书索引又有计算机类书籍管理类书籍等类型 --> 计算机类书籍又分具体什么书,如java核心思想jvm虚拟机等文档

分片:每个索引都有多个分片,多个发片可分担压力,提高搜索
备份:拷贝一份备份就完成分片的备份


二、使用elasticsearch-head操作elasticsearch
1、创建索引
在elasticsearch-head页面上,通过 Indices --> New Index 创建索引
这里我创建一个名为book,带有五个分片以及一个备份的索引,其中number of shards表示分片,number of replicas表示备份。

2、查看索引
Overview标签可看到如下变化,此为book索引,其中粗框的0到4分别表示五个分片,而细框为对应数字的粗框分片的备份

3、其他添加及查看操作
上面创建的索引并没有类型,可以通过Any Request 标签为该索引添加类型以及文档。
同时可以在Structured Query查看文档等的添加情况。
因为添加查看等操作需要涉及到json格式的数据,所以我们将在下面使用工具来进行。

三、使用Postman
Postman是一个Http请求模拟工具,可以用该工具较方便的发送各种Http请求
下载地址:https://www.getpostman.com
解压对应的安装包,然后到解压目录下执行 ./Postman 命令即可启动
注:下面操作的时候Postman都要选择 Body --> raw --> JSON

1、创建索引
例子:创建一个索引,名称为book,分片数为4,备份数为1,同时添加software和manage两个类型
PUT请求,索引名定义放在url后面

a、settings用于对索引的基本设置
          number_of_shards : 定义分片数
          number_of_replicas : 定义备份数
b、mappings中的内容为映射定义,定义索引的类型
          software和manage为加入book索引的两种类型

c、software中有porperties用于定义该类型的属性
          以第一个为例:author为属性名,type对应的值为属性类型(类似java中的属性类型以及属性的定义)。
          在本例子中,text为文本类型,keyword为关键字即不可拆分的(如国家名),integer为java的int类型,date为日期类型,format表示要定义的日期格式,这里表示可以为年月日格式或者(||)时间戳的格式
 d、manage对应空表示没有属性定义

2、添加文档
   两种方式:一种是添加指定id文档,一直为自动产生文档id
(1)指定id:
例子:在索引book的software类型中(/book/software在前面已经创建)添加一个id为abc的文档
PUT请求,url具体到指定的文档id
根据前面定义的类型信息,为该文档定义对应的属性信息,如同用java实例化对象时的属性设置

可在elasticsearch-head页面的Structured Query标签search到添加的文档,id为abc


(2)自动生成文档id:
例子:在索引book的software类型中(/book/software在前面已经创建)添加一个文档,id自动生成
POST请求,url只需指定索引和类型,不用指定文档id

文档的内容结构定义同上

可在elasticsearch-head页面的Structured Query标签search到添加的文档,可看到id随机生成


3、文档的修改
  两种方式:一种为直接修改对应文档id的内容,另一种为脚本方式修改
(1)直接修改
例子:将索引book的software类型中id为abc的文档,author属性对应的值改为“wangwu“
POST请求,url需要定位到对应的文档id,在url最后还要加上 _update 关键字说明该请求需修改文档内容
定义 doc 关键字表示文档,然后将指定的文档属性以及要修改的值加到请求体。

(2)脚本修改
例子:将索引book的software类型中id为abc的文档,number属性对应的值改为670
POST请求,url需要定位到对应的文档id,在url最后还要加上 _update 关键字说明该请求需修改文档内容
script:关键字表示使用脚本方式
lang:用于指定脚本语言,这里使用painless(es内置语言)
inline:定义脚本的内容,其中ctx表示es上下文,_source表示要修改的这个文档,number表示文档的属性
可用params定义要修改的具体值


4、删除操作
(1)删除文档
例子:删除索引book的software类型中id为abc的文档
DELETE请求,url指定对应文档id,执行即可

(2)删除索引
例子:删除索引book
DELETE请求,url指定对应索引,执行即可


5、查询操作
 包括简单查询、条件查询、聚合查询
(1)简单查询
例子:查询索引book的software类型中id为abc的文档信息
GET请求,url指定对应文档id执行即可


(2)条件查询
a例子:查询索引book下的所有文档信息
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索
这里定位到book索引,即book下的所有类型中的所有文档
query关键字定义条件搜索,match_all为空表示查询所有

b例子:查询索引book下的所有文档信息,从查询到的第1条开始,查出2条
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索
from和size表示从第from条开始,搜索出size条

c例子:查询索引book中title属性值含有 “java” 或者 “spring” 内容的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索
定义match属性,模糊查询,其中加入要指定的文档属性的符合内容


d例子:查询索引book中title属性值含有 “java” 或者 “spring” 内容的文档,并按number属性值顺序排列
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索
sort属性,定义按照指定属性排列顺序,可同上面对应输出的内容顺序进行对比


(3)聚合查询
a例子:查询索引book下文档属性number相同的值分别对应的数量
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索
aggs:关键字表示聚合方式查询;toge_number:自己命名,可以一次定义多个这种聚合;terms关键字定义聚合的内容

这里表示使用number来进行聚合,即将number相同的文档归为一组,可以在输出的最下面看到结果


b例子:查询索引book下所有文档的number属性的统计值
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索
stats:关键字表示统计分析
这里表示对所有文档的number属性进行统计分析,计算出其个数,平均数,最大/小值等信息,结果如右下图

   


6、高级查询
a例子:查询索引book中title属性值含有“java“或者“jvm“的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

match:模糊匹配,只要匹配到一个条件即可

b例子:查询索引book中title属性值含有“java“以及“核心”的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

match_phrase:精确匹配,需要满足所有匹配条件

c例子:查询索引book中author或者title字段含有”java”的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

multi_match:多字段匹配,只要其中一个字段匹配条件即可

d例子:查询索引book中title或者author字段中行有java和核心 或者含有wangwu的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

query_string:语法查询,可以在query关键字中定义AND/OR等语法

e例子:查询索引book中number为310的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

term:具体项查询

f例子:查询索引book中number字段的值 大于等于310并且小于670的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

range:范围查询,gt 表示大于,e 表示等于,lt 表示小于

g、例子:查询所有索引中author字段为"lisi"或者title字段含"jvm"的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

bool表示boolean,即是否满足;should表示应该满足"[]"中的一个条件

h、例子:查询所有索引中author字段为"lisi"且title字段含"java",同时number为650的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

bool表示boolean,即是否满足;should表示必须满足"[]"中的所有条件
filter表示过滤,这里指在满足前面条件之后过滤出number为650的,其他舍去

i、例子:查询所有索引中number字段不为650的文档
POST请求,url指定到自己要查找的范围,最后加 _search 关键字表示搜索

bool表示boolean,即是否满足;must_not表示必须不是


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值