es学习笔记--3

IK分词器插件(中文分词器 )

注意:版本需要下载对应es的版本

两个分词算法:ik_smart和ik_max_word,其中ik_smart为最少切分,ik_max_word为最细粒度划分

image-20210917145710611

配置自定义拓展字典

ik\config\IKAnalyzer.cfg.xml

image-20210917145727962

Rest风格

image-20210917145926602

1.添加数据

PUT /supjh/user/1
{
"name":"supjh22",
"age":22
"desc":"一个gamer"
"tags":["大学生","玩家","程序员"]
}
 
PUT /supjh/user/2
{
"name":"张三",
"age":3
"desc":"法外狂徒"
"tags":["交友","旅游","铸币"]
}
PUT /supjh/user/3
{
"name":"李四",
"age":30
"desc":"未知描述"
"tags":["大龄","起飞","芜湖"]
}

2.获取数据

GET supjh/user/1

3.更新数据

PUT /supjh/user/3
{
"name":"李四",
"age":30
"desc":"2333"
"tags":["大龄","起飞","芜湖"]
}

put如果不传递值就会被覆盖

image-20210917150025325

POST _update,推荐使用这种更新方式!

POST supjh/user/2/_update

POST supjh/user/2/_update
{
	 "doc":{
		"name":"张3"
	}
}

_update灵活性更高

4.搜索数据

这些MySQL也可以做,只是效率比较低!

  • 匹配
  • 按照条件匹配
  • 精确匹配
  • 区间范围匹配
  • 匹配字段过滤
  • 多条件查询
  • 高亮查询

简单搜索:

根据默认的映射规则,产生基本的查询!

GET supjh/user/_search?q=name:supjh22
 

复杂搜索:(select:排序,分页,高亮,模糊查询,精准查询!)

_score:权重分数

image-20210917150045005

查询的参数体:

GET supjh/user/_search
{
	"query":{
		"match":{
			"name":"jh"
		}
	}
}

image-20210917150055810

hit:

过滤字段:

image-20210917150226615

我们之后使用java操作es,所有的方法和对象就是这里面的key!(如query,_source)

排序:

image-20210917150235792

分页查询:

image-20210917150242785

数据下表还是从0开始,和学的所有数据结构是一样的!

/search/{current}/{pagesize}

布尔值查询:

must(and),所有条件都要符合

image-20210917150251247

should(or),满足一个条件即可

image-20210917150258645

must_not(not)

image-20210917150304432

过滤器filter

image-20210917150310841

  • gt:大于
  • gte:大于等于
  • lt:小于
  • lte:小于等于

image-20210917150318232

匹配多个条件:

image-20210917150324932

精确查询:

term 查询,是直接通过倒排索引指定的词条进行精确查询!

关于分词:

  • term,直接查询精确的
  • match,会使用分词器解析(先分析文档,然后再通过分析的文档进行查询)

两个类型:text keyword

image-20210917150340985

多个值匹配的精确查询:

image-20210917150350150

高亮查询:

自定义搜索高亮条件:

image-20210917150423467

posted @ 2021-09-17 15:06  SuperJH  阅读(70)  评论(0)    收藏  举报