Elastic Search Nest研究(二)--增删改查入门
增删改查入门
使用postman工具进行一系列的入门操作
索引
1. 创建索引
PUT
http://localhost:9200/news
配置分片1 副本0,先进行单机测试。
2. 删除索引
DELETE
请求http://localhost:9200/news
分词
1. 测试默认分词效果
POST
请求http://localhost:9200/news/_analyze
可以测试news索引库的默认分词效果
可以看出对于汉字的分词是每一个字都被分开的,对于我们汉语的使用习惯来说,我们更希望按照常见的词语来进行分组,这时候我们就需要一个ik分词器的插件
2. 安装ik插件
ik分词器(Github地址:https://github.com/medcl/elasticsearch-analysis-ik)
下载对应版本的zip包后直接解压到es安装目录下的plugins目录下,并且重命名为ik目录。
这里我们还是下载7.0版的分词器,对应于7.0版本的es
重新启动es加载ik插件
3. 测试ik分词效果
POST
请求http://localhost:9200/news/_analyze
测试下ik分词的效果
ik分词的两种模式
-
ik_max_word
会将文本做最细粒度的拆分,如将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。
-
ik_word
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。
映射
1. 映射的概念和数据类型
创建映射其实就是向索引库创建field的过程。既然是创建字段(field)就要同时指定好字段的类型。
es中常见的字段类型如下:
针对我们经常使用到的字符串类型text进行如下的解析
1) analyzer属性指定分词器默认是'standard'
如下是指定使用ik细粒度分词
"name": { "type": "text", "analyzer":"ik_max_word" }
索引和搜索的分词器也可以分开
如下表示在索引的时候使用ik_max_word
搜索的时候使用ik_smart
分词器
"name": { "type": "text", "analyzer":"ik_max_word", "search_analyzer":"ik_smart" }
2) index属性指定是否索引
2. 创建映射
POST
请求http://localhost:9200/news/_mapping
{
"properties": {
"id": {
"type": "long"
},
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
"author": {
"type": "keyword"
},
"createTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
3. 查询映射
GET
请求http://localhost:9200/news/_mapping
document 文档
1. 添加文档
2. 文档简单查询
简单查询就是通过url传递查询参数,发送get请求到es进行查询
格式:get ../_search?q=.....
q是搜索字符串
-
根据Id查询,因为我们创建了id字段的,因此不使用默认的id
GET
http://localhost:9200/news/_doc/_search?q=id:1
-
查询所有
GET
http://localhost:9200/news/_doc/_search
-
查询title中包含
开发
的记录GET
http://localhost:9200/news/_doc/_search?q=title:开发
-
查询author是lucy的记录
GET
http://localhost:9200/news/_doc/_search?q=author:lucy
3. 查询结果解析
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.2876821,
"hits": [
{
"_index": "news",
"_type": "_doc",
"_id": "890E_3YBGmz_qzUptekm",
"_score": 0.2876821,
"_source": {
"id": 1,
"title": "Bootstrap开发",
"content": "Bootstrap是由Twitter 推出的一个前台页面开发框架,是一个非常流行的开发框架,此框架集成了多种页面效果。此开发框架包含了大量 的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的精 美界面效果。",
"author": "lucy",
"createTime": "2020-12-25"
}
}
]
}
}
took:本次操作花费的时间,单位为毫秒。
timed_out:请求是否超时
_shards:说明本次操作共搜索了哪些分片
hits:搜索命中的记录
hits.total : 符合条件的文档总数
hits.hits :匹配度较高的前N个文档
hits.max_score:文档匹配得分,这里为最高分
_score:每个文档都有一个匹配度得分,按照降序排列。
_source:显示了文档的原始内容。