ElasticSearch6.5.4<一>单机部署以及简单尝试
ElasticSearch6.5.4<二>几个重要概念以及常用搜索
ElasticSearch6.5.4<三>中文以及拼音的操作
ElasticSearch6.5.4<四>java使用ES并实战搜索
ElasticSearch6.5.4<五>集群操作
ElasticSearch6.5.4<六>ELK和Logstash同步数据
ElasticSearch6.5.4<七>ES分布式原理以及工作原理
ElasticSearch6.5.4<八>ES常见问题
安装ik和拼音插件
ik下载地址
https://github.com/medcl/elasticsearch-analysis-ik
拼音下载地址
https://github.com/medcl/elasticsearch-analysis-pinyin
下载并解压到es的plugins,然后重启es
查询是否安装成功
测试ik分词
ik分词常用的有两种分词,ik_max_word和ik_smart
POST /class/_analyze
{
"analyzer": "ik_smart",
"text":"充满鲜花的世界在那里"
}
结果
POST /class/_analyze
{
"analyzer": "ik_max_word",
"text":"充满鲜花的世界在那里"
}
结果
区别:ik_max_word:会将文本做最细粒度的拆分
ik_smart:会做最粗粒度的拆分
测试拼音分词
POST /class/_analyze
{
"analyzer": "pinyin",
"text":"充满鲜花的世界在那里"
}
结果
创建索引,配置两种分词器
PUT /class
{
"settings":{
"analysis":{
"filter":{
"pinyin_simple_filter":{
"type":"pinyin",
"keep_first_letter":true,
"keep_separate_first_letter":false,
"keep_full_pinyin":false,
"keep_original":false,
"limit_first_letter_length":50,
"lowercase":true
},
"pinyin_full_filter":{
"type":"pinyin",
"keep_first_letter":false,
"keep_separate_first_letter":false,
"keep_full_pinyin":true,
"none_chinese_pinyin_tokenize":true,
"keep_original":false,
"limit_first_letter_length":50,
"lowercase":true
}
},
"analyzer":{
"pinyin_simple":{
"tokenizer":"keyword",
"filter":[
"pinyin_simple_filter",
"lowercase"
]
},
"pinyin_full":{
"tokenizer":"keyword",
"filter":[
"pinyin_full_filter",
"lowercase"
]
}
}
}
},
"mappings":{
"student":{
"properties":{
"name":{
"type":"text",
"analyzer":"ik_max_word",
"fields":{
"spy":{
"type":"text",
"analyzer":"pinyin_simple"
},
"fpy":{
"type":"text",
"analyzer":"pinyin_full"
}
}
},
"alias":{
"type":"text",
"analyzer":"ik_max_word",
"fields":{
"spy":{
"type":"text",
"analyzer":"pinyin_simple"
},
"fpy":{
"type":"text",
"analyzer":"pinyin_full"
}
}
},
"address":{
"type":"text",
"analyzer":"ik_max_word",
"fields":{
"spy":{
"type":"text",
"analyzer":"pinyin_simple"
},
"fpy":{
"type":"text",
"analyzer":"pinyin_full"
}
}
},
"intro":{
"type":"text",
"analyzer":"ik_max_word",
"fields":{
"spy":{
"type":"text",
"analyzer":"pinyin_simple"
},
"fpy":{
"type":"text",
"analyzer":"pinyin_full"
}
}
}
}
}
}
}
准备数据
PUT /class/student/1
{
"name":"刘德华",
"age":20,
"alias":"华仔,华Dee,华哥",
"address":"中国香港",
"create_time":"2019-06-06 15:03:00",
"intro":"刘德华出生于香港新界,在家中排行老四,幼时随家人搬到了九龙钻石山的木屋区居住,并和姐弟一起帮助家里打理卖稀饭的生意 [24] 。1973年,刘德华随家人搬入香港蓝田邨第15座14楼 [25] 。刘德华从黄大仙天主教小学毕业后升读可立中学 [26] 。在可立中学读书期间,刘德华积极参加校内学校剧社的表演,在老师杜国威的指导下学习戏剧方面的知识。此外,他还参与包括编剧在内的幕后制作。刘德华在中五会考获得1B3D2E(中文读本A)的成绩。中六上学期后,他到香港电视广播有限公司的艺员训练班受训,从而开始了演艺之路"
}
PUT /class/student/2
{
"name":"周华健",
"age":21,
"alias":"四牛、天王杀手、阳光游子",
"address":"中国广东",
"create_time":"2019-06-06 15:03:00",
"intro":"周华健(Emil Wakin Chau),祖籍广东省汕头市,1960年12月22日生于香港西营盘,中国台湾流行乐男歌手、音乐人、演员,毕业于台湾大学。1984年凭借个人创作单曲《谁曾说过》进入演艺圈。1986年加入滚石唱片公司。1987年凭借专辑《心的方向》获得关注;同年参演电影处女作《桂花巷》。1989年发行个人首张概念专辑《最真的梦》,其中歌曲《这城市有爱》获得第2届台湾金曲奖最佳年度歌曲奖。"
}
测试ik分词
POST /class/_search
{
"query":{
"match":{
"name":"刘德华"
}
}
}
测试拼音分词
简拼
POST /class/_search
{
"query":{
"match":{
"name.spy":"ldh"
}
}
}
全拼
POST /class/_search
{
"query":{
"match":{
"name.fpy":"liudehua"
}
}
}
测试中拼混合搜索
POST /class/_search
{
"query":{
"multi_match":{
"query":"刘d华",
"fields":[
"name",
"name.spy"
]
}
}
}
附加
自定义一个analyzers
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"std_folded": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"my_text": {
"type": "text",
"analyzer": "std_folded"
}
}
}
}
}
Analysis API
Mapping API
总结
这里都只是简单的操作,实际环境中,业务不同,对应的查询条件不相同,查询条件远远比这里复杂的多,ElasticSearch6.5.4<四>java如何使用ES 会介绍真实环境的操作