analysis(只是一个概念),文本分析是将全文本转换为一系列单词的过程,也叫分词。 analysis是通 过analyzer(分词器)来实现的,可以使用Elasticsearch内置的分词器,也可以自己去定制一些分词 器。 除了在数据写入的时候进行分词处理,那么在查询的时候也可以使用分析器对查询语句进行分词。
内置分词器
ik_max_word | 最大细度 | |
ik_smart | 最小细度 |
第一种是插入文档时,将text类型的字段做分词然后插入倒排索引,
第二种就是在查询时,先对要查询的text类型的输入做分词,再去倒排索引搜索
#最大细度分词
GET _analyze
{
"analyzer": "ik_max_word",
"text": "惠普(HP)M104w黑白激光打印机 无线 手机打印 家用 小型办公 P11081106升级wifi版"
}
#最小细度分词
GET _analyze
{
"analyzer": "ik_smart",
"text": "惠普(HP)M104w黑白激光打印机 无线 手机打印 家用 小型办公 P11081106升级wifi版"
}
配置分词热更新
/home/elasticsearch-7.16.2/plugins/analysis-ik/config
IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">/home/elasticsearch-7.16.2/plugins/analysis-ik/data/participles.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">/home/elasticsearch-7.16.2/plugins/analysis-ik/data/noparticiples.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://122.9.0.48:9000/participles.txt</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<entry key="remote_ext_stopwords">http://122.9.0.48:9000/noparticiples.txt</entry>
</properties>
es 定时自动读取词典,通过判断请求文档长度和状态信息,来确认文档是否发生变化,发生变化后,热加载至es内存中
设置分词后,es会对新入数据,按照最新分词词典进行分词操作,如果需要对原始数据更新分词。使用官方api
#更新分词
POST tjecommodity-*/_update_by_query
{
"conflicts":"proceed"
}