目录
一、安装
1、进入官网下载安装包。开源搜索:Elasticsearch、ELK Stack 和 Kibana 的开发者 | Elastic
2、安装解压即可。
ES解压缩之后的目录结构如下:
双击elasticsearch.bat启动服务,然后在浏览器地址栏中输入127.0.0.1:9200
数据格式对比
二、基本操作
索引操作
- 创建索引(等同于创建数据库)
Put请求。http://127.0.0.1:9200/indexbase
注意:
- 第一次启动elasticsearch.bat的时候需要以管理员身份运行。不然用postmat创建索引的时候会一直处于sending状态。
- 不能重复添加索引,会提示已存在。
2、查看索引
- 查看所有索引Get请求:http://127.0.0.1:9200/_cat/indices?v。相当于show tables
- 查看单个索引:与创建索引的语法一样,但不是Put而是Get。
GET: http://127.0.0.1:9200/indexbase
3、删除索引
DELETE: http://127.0.0.1:9200/indexbase
文档操作(文档相当于表数据,向表中添加数据)
- 创建文档
使用POST请求。POST: http://127.0.0.1:9200/indexbase/user
也可以使用PUT,但是必须自己声明唯一标识。PUT: http://127.0.0.1:9200/indexbase/user/myID1
- 查看文档
GET: http://127.0.0.1:9200/indexbase/user/myID1
需要指明文档的唯一性标识。类似于mysql中数据的主键。
- 修改文档
- 和新增创建文档一样,根据请求体的内容进行覆盖。全部覆盖了。被替换了
POST: http://127.0.0.1:9200/indexbase/user/myID1
- 只修改某一个字段。_update。然后请求体的内容为
POST:http://127.0.0.1:9200/indexbase/user/myID1/_update
- 删除文档
根据主键删除:DELETE: http://127.0.0.1:9200/indexbase/user/myID1
根据条件删除(可多条):POST:http://127.0.0.1:9200/indexbase/_delete_by_query
映射操作
- 创建映射
PUT: http://127.0.0.1:9200/indexbase/_mapping
- 查看映射
GET:http://127.0.0.1:9200/indexbase/_mapping
高级查询
- 查询所有文档(query)
GET: http://127.0.0.1:9200/indexbase/user/_search
Match_all代表查询所有
- 匹配查询
GET: http://127.0.0.1:9200/indexbase/user/_search
- 多个字段中查询
GET: http://127.0.0.1:9200/indexbase/user/_search
- Term查询:精确的关键字匹配查询,不对查询条件进行分词。
GET http://127.0.0.1:9200/indexbase/user/_search
- Terms 多关键字精确查询,terms和term查询一样,但它允许你指定多值进行匹配。如果这个字段包含了指定值中的如何一个值,那么这个文档满足条件,类似于mysql的in。
Get: http://127.0.0.1:9200/indexbase/user/_search
- 指定查询条件
默认情况下_source的所有字段都返回。如果我们只想获取其中的部分字段,可以添加_source的过滤。
GET: http://127.0.0.1:9200/indexbase/user/_search
- 过滤字段
Includes:指定想要显示的字段。
Excludes:指定不想要显示的字段。
GET: http://127.0.0.1:9200/indexbase/user/_search
- 组合查询
‘bool’把各种其他查询通过’must(必须)’、’must_not(必须不)’、’should(应该)’的方式进行组合。
- 范围查询(range)
Rang:查询找出那些落在指定区间内的数字或者时间。
Gt大于get大于等于lt小于lte小于等于
GET:http://127.0.0.1:9200/indexbase/user/_search。查询年龄大小30岁的
- 模糊查询(fuzzy)
返回包含与搜索字词相似的字词的文档
编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。
例如:
更改字符:box变成fox
删除字符:black变成lack
插入字符:sic变成sick
转置两个相邻字符:act变成cat。
GET: http://127.0.0.1:9200/indexbase/_search
获取响应结果
为了找到相似的术语,fuzzy查询会在指定的编辑距离内创建一组搜索词的所有可能的变体或扩展。然后查询返回每个扩展的完全匹配。
通过fuzziness修改编辑距离。一般使用默认AUTO,根据术语的长度生成编辑距离。
GET: http://127.0.0.1:9200/indexbase/_search
fuzziness:1,表示的是编辑距离为1。只能修改一次。
例如:对hat进行两次编辑可以得到mad。这里的fuzziness就是为2.
查看上面执行的响应结果
- 排序
sort可以让我们按照不同的字段进行排序,并且通过order指定排序的方式。desc降序,asc升序。如果出现多个字段,则先按照前面的字段进行排序然后根据后面依次进行排序。
GET: http://127.0.0.1:9200/indexbase/_search
响应结果如下
- 高亮
在进行关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮。
ES可以对查询内容中的关键字部分进行标签和样式(高亮)的设置。
pre_tags:前置标签
post_tags:后置标签
fields:需要高亮的字段
GET: http://127.0.0.1:9200/indexbase/_search
- 分页
from:当前页的起始索引,默认从0开始。from = (pageNum -1 ) * size
size:每页显示多少条
GET: http://127.0.0.1:9200/indexbase/_search
- 聚合查询