ES(ElasticSearch)基础操作

IK分词器插件

什么是IK分词器?

分词: 即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把 数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个 词,比如 “我爱大数据狂人” 会被分为 " "," "," 大数据 "," " ,“”人”这显然是不符合要求的,所以我们需要安装中文分词 器ik 来解决这个问题。
IK 提供了两个分词算法: ik_smart ik_max_word ,其中 ik_smart 为最少切分, ik_max_word 为最细 粒度划分!一会我们测试!
kibana 中测试 ik 分词器,并就相关分词结果和 icu 分词器进行对比。
ik_max_word : 细粒度分词,会穷尽一个语句中所有分词可能,测试!

ik_smart : 粗粒度分词,优先匹配最长词,只有1个词!

如果我们想让系统识别“李源志是一个词,需要编辑自定义词库。

 

这时候就不会被ik解析器解析

这时候李远源就不会被解析

Rest风格说明

一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交 互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 基本Rest 命令说明:
 
 
基础测试
1 、首先我们浏览器 http://localhost:5601/ 进入 kibana 里的 Console
2 、首先让我们在 Console 中输入 :
// 命令解释
// PUT 创建命令 test1 索引 type1 类型 1 id
PUT /test1/type1/1
{
"name":"大数据狂人", // 属性
"age":16 // 属性
}

返回结果 (是以REST ful 风格返回的 ):

那么 name 这个字段用不用指定类型呢。毕竟我们关系型数据库 是需要指定类型的啊 !
字符串类型
text keyword
数值类型
long, integer, short, byte, double, flfloat, half_flfloat, scaled_flfloat
日期类型
date
te 布尔值类型
boolean
二进制类型
binary
等等
 
指定字段类型
 
查看一下索引字段
GET test2

删除一条索引呢(库)

DELETE /test1

 

在来具体实现一下增删改查命令

建数据PUT创建

PUT /kuanger/user/1
 { "name":"狂人说", "age":18, "desc":"一顿操作猛如虎,一看工资2500", "tags":["直男","技术宅","温暖"] }

PUT /kuanger/user/2 
{ "name":"张三", "age":3, "desc":"法外狂徒", "tags":["渣男","旅游","交友"] }

PUT /kuanger/user/3 
{ "name":"李四", "age":30, "desc":"mmp,不知道怎么形容", "tags":["靓女","旅游","唱歌"] }

这里我们可以使用PUT新增已有数据进行修改,也可使用POST

PUT进行修改有个缺点,我们没有进行修改的值将会变成null,所以这里我们选取post

更新数据 POST

我们使用 POST 命令,在 id 后面跟 _update ,要修改的内容放到 doc 文档(属性)中即可。

POST /kuanger/user/1/_update 
{ "doc":{ "name":"狂人", "desc":"hello" } }

查询数据PUT

简单的查询

GET kuanger/user/1
条件查询 _search?q=
GET kuanger/user/_search?q=name:狂人

 

使用 match_all ,根据字段查询。相当于sql的 select * from table_name 一样。
GET kuanger/user/_search
 { "query":{ "match_all": {} },"_source": ["name","desc"] }

 

使用sort进行排序

GET kuanger/user/_search 
{ "query":{ "match_all": {} },"sort": [ { "age": { "order": "desc" } } ] }
分页查询
 
GET kuanger/user/_search 
{ "query":{ "match_all": {} },"sort": [ { "age": { "order": "asc" } } ],"from": 0, # 从第n条开始 "size": 1 # 返回n条数据 }
我们通过在 bool 属性内使用 must 来作为查询条件!,和sql中的 and 差不多,里面的条件
需要都满足!
GET kuangshen/user/_search 
{ "query": { "bool": { "must": [ { "match": { "name": "狂神说" } },{ "match": { "age": 3 } } ] } } }
must_not和sql中or差不多
 
Fitter
我要查询 name 为狂人 的, age 大于 10 的数据
GET kuangshen/user/_search 
{ "query":{ "bool": { "must": [ { "match": { "name": "狂" } } ],"filter": { "range": { "age": { "gt": 10 } } } } } }
这里就用到了 fifilter 条件过滤查询,过滤条件的范围用 range 表示, gt 表示大于,大于多少呢 ? 10
其余操作如下 :
gt 表示大于
gte 表示大于等于
lt 表示小于
lte 表示小于等于
 
 
今天ElasticSearch的基本操作就讲到这里
 
 
 

 

 

 

 

 

 
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值