ElasticSearch7.10-分词器
分词器1.字符过滤器
1.先容
https://i-blog.csdnimg.cn/img_convert/4d24c375800177143436bd7388b41c25.png
2.过滤html标签
https://i-blog.csdnimg.cn/img_convert/da1a832fe9517c4c2f1c6f343afbd581.png
3.mappings过滤规则(屏蔽非文明用语)
https://i-blog.csdnimg.cn/img_convert/487fd14749e707a7b58bf9ada2f93ba1.png
4.正则更换
https://i-blog.csdnimg.cn/img_convert/e6abc071b5b030bf601669120e055772.png
2.自定义分词器
1.代码
PUT /test_index
{
"settings": {
"analysis": {
"char_filter": {
"my_char_filter": {
"type": "html_strip" // 自定义字符过滤器,使用 html_strip 类型,剥离 HTML 标签
}
},
"filter": {
"my_stopword": {
"type": "stop", // 自定义过滤器,移除停用词
"stopwords": ["is", "a"] // 指定停用词列表,包括 "is" 和 "a"
}
},
"tokenizer": {
"my_tokenizer": {
"type": "pattern", // 自定义分词器,基于正则表达式进行分词
"pattern": "[,\\.?\\s]+" // 正则表达式,将逗号、句号、问号和空格作为分隔符
}
},
"analyzer": {
"my_analysis": {
"type": "custom", // 自定义分析器类型
"char_filter": ["my_char_filter"], // 使用自定义字符过滤器 "my_char_filter"
"tokenizer": "my_tokenizer", // 使用自定义分词器 "my_tokenizer"
"filter": ["my_stopword"] // 使用自定义停用词过滤器 "my_stopword"
}
}
}
}
}
2.查询
GET /test_index/_analyze
{
"analyzer": "my_analysis",
"text": "<p>This is a test, isn't it amazing?</p>"
}
https://i-blog.csdnimg.cn/img_convert/51b39aaae78e934f314164d76e148f5d.png
3.中文分词器
1.下载ik分词器7.10.0版本(跟es对应)
https://release.infinilabs.com/analysis-ik/stable/
https://i-blog.csdnimg.cn/img_convert/b51fa5f52adb9b026cb97efc974dde7a.png
https://i-blog.csdnimg.cn/img_convert/d000e31267e1ae76051977dd21bf4eb2.png
2.应用ik分词器
1.进入插件目次下创建一个ik目次
cd /usr/local/ElasticSearch/elasticsearch-7.10.0/plugins && mkdir ik
2.将下载的压缩包上传上去
cd ik
https://i-blog.csdnimg.cn/img_convert/ffd5e26774d212a838cb83aa781eefb5.png
3.安装unzip并解压
1.安装
yum install unzip
2.解压
unzip elasticsearch-analysis-ik-7.10.0.zip
3.删除zip
rm -f elasticsearch-analysis-ik-7.10.0.zip
4.将这个ik目次分别复制给另外三台节点
cp -r /usr/local/ElasticSearch/elasticsearch-7.10.0/plugins/ik /usr/local/ElasticSearch/node2/plugins && cp -r /usr/local/ElasticSearch/elasticsearch-7.10.0/plugins/ik /usr/local/ElasticSearch/node3/plugins
4.重启es
1.起首查找到es,然后kill -9
ps -aux | grep elasticsearch
2.重新启动三个节点
su elasticsearch
cd /usr/local/ElasticSearch/elasticsearch-7.10.0/bin/ && ./elasticsearch -d && cd /usr/local/ElasticSearch/node2/bin/ && ./elasticsearch -d && cd /usr/local/ElasticSearch/node3/bin/ && ./elasticsearch -d
3.使用head插件查察状态
https://i-blog.csdnimg.cn/img_convert/cef9c752aa1f843f3b37f973dd5105bc.png
3.测试ik分词器是否生效
1.创建索引并应用ik分词器
https://i-blog.csdnimg.cn/img_convert/f576d98366203976328a45c9475a002a.png
PUT /test_index
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_smart"
},
"description": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
2.插入数据
POST /test_index/_doc
{
"title": "Elasticsearch 是一个分布式搜索引擎",
"description": "IK 分词器支持中文分词,并且可以用于全文检索"
}
3.查察分词结果
POST /test_index/_analyze
{
"field": "title",
"text": "Elasticsearch 是一个分布式搜索引擎"
}
https://i-blog.csdnimg.cn/img_convert/67cf19db9ff352b2cc33ea5ba11a15e9.png
POST /test_index/_analyze
{
"field": "description",
"text": "IK 分词器支持中文分词,并且可以用于全文检索"
}
https://i-blog.csdnimg.cn/img_convert/2286a6fa4c9d1f4a83442b5b21c0a3f9.png
4.ik分词器的设置文件
https://i-blog.csdnimg.cn/img_convert/0cc00718ea6d829369b37d5581113d25.png
索引的批量操纵
1.基于mget的批量查询
1.环境搭建
PUT /new_index
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "integer"
}
}
}
}
POST /new_index/_doc/1
{
"name": "Alice",
"age": 25
}
POST /new_index/_doc/2
{
"name": "Bob",
"age": 30
}
POST /new_index/_doc/3
{
"name": "Charlie",
"age": 22
}
2.根据id进行批量查询
GET /new_index/_mget
{
"ids":
}
https://i-blog.csdnimg.cn/img_convert/5fdcbd92515b0f26d45d2e334bc79676.png
3.还可以在批量查询时指定自己想要的字段
GET /new_index/_mget
{
"docs": [
{
"_id": 1,
"_source": {
"include": [
"name"
]
}
},
{
"_id": 2,
"_source": {
"exclude": [
"name"
]
}
}
]
}
https://i-blog.csdnimg.cn/img_convert/5e45cbd17e7d085fc8f519ad250c3fae.png
2.文档的四种操纵类型
1.先容
https://i-blog.csdnimg.cn/img_convert/0bfb0805bc5d8f0f0c9ff363df0c3241.png
2._create 创建数据
https://i-blog.csdnimg.cn/img_convert/65c0f21315252b86a3a0ccb5d470ab2e.png
3.删除数据
https://i-blog.csdnimg.cn/img_convert/704d1d03f865cc803725eb5a8756f206.png
4._search 查询数据
https://i-blog.csdnimg.cn/img_convert/6c43dc58f65d3a7e2192f05aecb57bc7.png
5._update 更新数据
https://i-blog.csdnimg.cn/img_convert/ea9c02db5f7813f4502ac0ed94347911.png
3._bulk
https://i-blog.csdnimg.cn/img_convert/9c8bbfd7ce04147b54a63aa7ca0c8fa5.png
含糊搜刮和智能搜刮推荐
1.基本先容
https://i-blog.csdnimg.cn/img_convert/7396199737071addbd263654e5e189ff.png
2.前缀搜刮
1.基础数据
#prefix: 前缀搜索
POST /my_index/_bulk?filter_path=items.*.error
{ "index": { "_id": "1" } }
{ "text": "城管打电话喊商贩去摆摊摊" }
{ "index": { "_id": "2" } }
{ "text": "笑果文化回应老农去摆摊" }
{ "index": { "_id": "3" } }
{ "text": "老农耗时17年种出椅子树" }
{ "index": { "_id": "4" } }
{ "text": "夫妻结婚30多年AA制,被城管抓" }
{ "index": { "_id": "5" } }
{ "text": "黑人见义勇为阻止抢劫反被铐住" }
2.代码
{
"query": {
"prefix": {
"text": {
"value": "笑"
}
}
}
}
3.原理
前缀匹配是对倒排索引进行匹配的,而不是整个字段
3.通配符搜刮
1.基本先容
通配符也是匹配的倒排索引
2.代码
https://i-blog.csdnimg.cn/img_convert/74d6a464f4e421cc6025fc041d6bcc3f.png
4.正则匹配
https://i-blog.csdnimg.cn/img_convert/039d46b447be60e142dd303ecea89f8f.png
5.含糊查询
1.先容
https://i-blog.csdnimg.cn/img_convert/d8d9f4b7d4ebb8ce7eec691a0b7862c9.png
2.代码
注意:fuzzy是不分词的,match是分词的
https://i-blog.csdnimg.cn/img_convert/b8b822e5d5e392248a29bf66f976aa98.png
6.短语前缀
1.先容
https://i-blog.csdnimg.cn/img_convert/e25500e869b23ebb8b02f4a53d83e06d.png
2.代码
https://i-blog.csdnimg.cn/img_convert/e7af2de8161ce88ec5007bf1477e3fa4.png
7.edge_ngram
PUT /my_index
{
"settings": {
"analysis": {
"filter": {
"my_edge_ngram": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 5
}
},
"analyzer": {
"my_ngram_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"my_edge_ngram"
]
}
}
}
},
"mappings": {
"properties": {
"text": {
"type": "text",
"analyzer": "my_ngram_analyzer",
"search_analyzer": "standard"
}
}
}
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]