ElasticSearch搜索引擎学习(一)

1.创建索引库

使用postman或curl这样的工具创建:
put http://localhost:9200/索引库名称
{
	"settings":{
		"index":{
		"number_of_shards":1,
		"number_of_replicas":0
		}
	}
}

2.创建映射

post http://localhost:9200/索引库名称/类型名称/_mapping
{
	"properties": {
		"name": {
		"type": "text"
		},
		"description": {
		"type": "text"
		},
		"studymodel": {
		"type": "keyword"
		}
	}
}

3 创建文档

ES中的文档相当于MySQL数据库表中的记录。
发送:put 或Post http://localhost:9200/索引库名称/类型名称/id值
(如果不指定id值ES会自动生成ID)
{
	"name":"Bootstrap开发框架",
	"description":"Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。此开发框架包
	含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的
	精美界面效果。",
	"studymodel":"201001"
}

4.搜索文档

4.1根据课程id查询文档
get http://localhost:9200/索引库名称/类型名称/id值
4.2查询所有记录
发送 get http://localhost:9200/索引库名称/类型名称/_search
4.3查询名称中包括spring 关键字的的记录
发送:get http://localhost:9200/索引库名称/类型名称/_search?q=name:bootstrap
4.4查询学习模式为201001的记录
发送 get http://localhost:9200/索引库名称/类型名称/_search?q=studymodel:201001

5.IK分词器

在添加文档时会进行分词,索引中存放的就是一个一个的词(term),当你去搜索时就是拿关键字去匹配词,最终
找到词关联的文档。
测试当前索引库使用的分词器:
post 发送:localhost:9200/_analyze	
{"text":"测试分词器,后边是测试内容:spring cloud实战"}

6.安装IK分词器(版本要一致)

使用IK分词器可以实现对中文分词的效果
下载IK分词器:(Github地址:https://github.com/medcl/elasticsearch-analysis-ik)
解压,并将解压的文件拷贝到ES安装目录的plugins下的ik目录下	

7.两种分词模式

ik分词器有两种分词模式:ik_max_word和ik_smart模式。
1、ik_max_word
会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、
华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。
2、ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂	

8.自定义词库

如果要让分词器支持一些专有词语,可以自定义词库。
iK分词器自带一个main.dic的文件,此文件为词库文件	

9.映射

6.1 映射维护方法
1、查询所有索引的映射:
GET: http://localhost:9200/_mapping
2、创建映射
post 请求:http://localhost:9200/索引库名称/类型名称/_mapping	

10.常用映射类型

10.1字符串包括text和keyword两种类型:
1、text
1)analyzer
通过analyzer属性指定分词器。
下边指定name的字段类型为text,使用ik分词器的ik_max_word分词模式
"name": {
"type": "text",
"analyzer":"ik_max_word"
}
对于ik分词器建议是索引时使用ik_max_word将搜索内容进行细粒度分词,搜索时使用ik_smart提高搜索精确性
"name": {
"type": "text",
"analyzer":"ik_max_word",
"search_analyzer":"ik_smart"
}
10.2 index
通过index属性指定是否索引。
默认为index=true,即要进行索引,只有进行索引才可以从索引库搜索到。
但是也有一些内容不需要索引,比如:商品图片地址只被用来展示图片,不进行搜索图片,此时可以将index设置
为false。
删除索引,重新创建映射,将pic的index设置为false,尝试根据pic去搜索,结果搜索不到数据
"pic": {
"type": "text",
"index":false
}
10.3 store
是否在source之外存储,每个文档索引后会在 ES中保存一份原始文档,存放在"_source"中,一般情况下不需要设置
store为true,因为在_source中已经有一份原始文档了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值