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的基本操作就讲到这里
版权声明:本文为weixin_44519124原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。