analysis(只是一个概念),文本分析是将全文本转换为一系列单词的过程,也叫分词。 analysis是通 过analyzer(分词器)来实现的,可以使用Elasticsearch内置的分词器,也可以自己去定制一些分词 器。 除了在数据写入的时候进行分词处理,那么在查询的时候也可以使用分析器对查询语句进行分词。

    内置分词器

    ik_max_word 最大细度
    ik_smart 最小细度

    第一种是插入文档时,将text类型的字段做分词然后插入倒排索引,
    第二种就是在查询时,先对要查询的text类型的输入做分词,再去倒排索引搜索

    1. #最大细度分词
    2. GET _analyze
    3. {
    4. "analyzer": "ik_max_word",
    5. "text": "惠普(HP)M104w黑白激光打印机 无线 手机打印 家用 小型办公 P11081106升级wifi版"
    6. }

    image.png

    #最小细度分词
    GET _analyze
    {
      "analyzer": "ik_smart",
      "text": "惠普(HP)M104w黑白激光打印机 无线 手机打印 家用 小型办公 P11081106升级wifi版"
    }
    

    image.png

    配置分词热更新
    /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>
    

    http://122.9.0.48:9000/participles.txt
    es 定时自动读取词典,通过判断请求文档长度和状态信息,来确认文档是否发生变化,发生变化后,热加载至es内存中

    设置分词后,es会对新入数据,按照最新分词词典进行分词操作,如果需要对原始数据更新分词。使用官方api

    
    #更新分词
    POST tjecommodity-*/_update_by_query
    {
      "conflicts":"proceed"
    }