美文网首页
elasticsearch

elasticsearch

作者: 吃可爱长大鸭 | 来源:发表于2020-01-10 20:20 被阅读0次

    第一章 安装部署

    1.创建目录并进入

    [root@elk ~]# mkdir /data/soft/ -p
    
    [root@elk ~]# cd /data/soft/
    

    2.上传软件包

    [root@elk /data/soft]# rz -E
    -rw-r--r-- 1 root root 114059630 Oct  6 16:03 elasticsearch-6.6.0.rpm
    -rw-r--r-- 1 root root 185123116 Oct  6 16:03 kibana-6.6.0-x86_64.rpm
    

    4.解压/data/soft/*.rpm包

    [root@elk /data/soft]# rpm -ivh *.rpm
    

    5.更改elasticsearch配置文件

    [root@elk /data/soft]# vim /etc/elasticsearch/elasticsearch.yml
    
    23  node.name: node-1        #打开注释
      
    33  path.data: /var/lib/elasticsearch    #打开状态
    
    37  path.logs: /var/log/elasticsearch    #打开状态
    
    43  bootstrap.memory_lock: true         #打开注释
    
    55  network.host: 10.0.0.88,127.0.0.1   #更改自己的本机IP和本地IP
     
    59  http.port: 9200      #打开注释的端口号
    

    6.启动elasticsearch服务

    [root@elk /data/soft]# systemctl daemon-reload
    
    [root@elk /data/soft]# systemctl start elasticsearch.service
    
    [root@elk /data/soft]# systemctl enable elasticsearch.service
    

    7.查看服务开启没有

    [root@elk /data/soft]# curl 127.0.0.1:9200
    {
      "name" : "node-1",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "VGosthZISMmh0C89vv0hbw",
      "version" : {
        "number" : "6.6.0",
        "build_flavor" : "default",
        "build_type" : "rpm",
        "build_hash" : "a9861f4",
        "build_date" : "2019-01-24T11:27:09.439740Z",
        "build_snapshot" : false,
        "lucene_version" : "7.6.0",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You Know, for Search"
    }
    

    8.启动服务发现报错

    解决内存锁定失败:
    查看日志发现提示内存锁定失败
    [root@db01 ~]# tail -f /var/log/elasticsearch/elasticsearch.log 
    [2019-11-14T09:42:29,513][ERROR][o.e.b.Bootstrap          ] [node-1] node validation exception
    [1] bootstrap checks failed
    [1]: memory locking requested for elasticsearch process but memory is not locked
    
    
    解决方案:
    systemctl edit elasticsearch
    [Service]
    LimitMEMLOCK=infinity
    
    systemctl daemon-reload
    systemctl restart elasticsearch.service
    

    9.配置kibana文件

    [root@elk /data/soft]# vim /etc/kibana/kibana.yml
    
    2  server.port: 5601  #打开注释
    
    7  server.host: "10.0.0.88"   #更改IP地址
    
    37  kibana.index: ".kibana"   #打开kibana服务
    

    10.启动服务

    systemctl start kibana
    

    es-head插件安装

    注意:需要修改配置文件添加允许跨域参数
    
    修改ES配置文件支持跨域
    http.cors.enabled: true 
    http.cors.allow-origin: "*"
    
    es-head 三种方式:
    1.npm安装方式
    - 需要nodejs环境
    - 需要连接国外源
    
    2.docker安装
    
    3.google浏览器插件
    - 修改文件名为zip后缀
    - 解压目录
    - 拓展程序-开发者模式-打开已解压的目录
    - 连接地址修改为ES的IP地址
    

    Head插件在5.0以后安装方式发生了改变,需要nodejs环境支持,或者直接使用别人封装好的docker镜像
    插件官方地址
    https://github.com/mobz/elasticsearch-head

    使用docker部署elasticsearch-head

    docker pull alivv/elasticsearch-head
    docker run --name es-head -p 9100:9100 -dit elivv/elasticsearch-head
    

    使用nodejs编译安装elasticsearch-head

    cd /opt/
    wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz
    tar xf node-v12.13.0-linux-x64.tar.xz
    mv node-v12.13.0-linux-x64 node
    vim /etc/profile
    PATH=$PATH:/opt/node/bin
    source profile 
    npm -v
    node -v 
    git clone git://github.com/mobz/elasticsearch-head.git
    unzip elasticsearch-head-master.zip
    cd elasticsearch-head-master
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    cnpm install
    npm run start &
    =================================================
    

    1.打开kibana 10.0.0.88:5601


    image.png

    2.打开elasticsearchweb界面


    image.png
    image.png
    3.操作ES

    Dev Tools


    image.png

    第二章 es数据库操作

    使用自定义的ID

    PUT oldzhang/info/1
    {
      "name": "zhang",
      "age": "29"
    }
    
    2.使用随机ID
    POST oldzhang/info/
    {
      "name": "zhang",
      "age": "29",
      "pet": "xiaoqi"
    }
    
    3.和mysql对应关系建议单独列一个字段
    POST oldzhang/info/
    {
      "uid": "1",
      "name": "ya",
      "age": "29"
    }
    
    
    curl -XPUT '10.0.0.51:9200/oldzhang/info/1?pretty' -H 'Content-Type: application/json' -d'
    {
      "uid": "1",
      "name": "ya",
      "age": "29"
    }'
    
    curl -XPUT '10.0.0.51:9200/oldzhang/info/2?pretty' -H 'Content-Type: application/json' -d'
    {
      "uid": "1",
      "name": "zhang",
      "age": "29"
    }'
    
    curl -XPUT '10.0.0.51:9200/oldzhang/info/3?pretty' -H 'Content-Type: application/json' -d'
    {
      "uid": "1",
      "name": "ya",
      "age": "27"
    }'
    
    curl -XPUT '10.0.0.51:9200/oldzhang/info/4?pretty' -H 'Content-Type: application/json' -d'{
    "uid": "1",
    "name": "ya",
    "age": "30"}'
    
    
    mysql   es
    库       索引   index 
    表       类型   type 
    字段  json   key
    行      文档   doc
    
    建测试语句
    POST oldzhang/info/
    {
      "name": "zhang",
      "age": "29",
      "pet": "xiaoqi",
      "job": "it"
    }
    
    POST oldzhang/info/
    {
      "name": "xiao1",
      "age": "30",
      "pet": "xiaoqi",
      "job": "it"
    }
    
    POST oldzhang/info/
    {
      "name": "xiao2",
      "age": "26",
      "pet": "xiaoqi",
      "job": "it"
    }
    
    POST oldzhang/info/
    {
      "name": "xiao4",
      "age": "35",
      "pet": "xiaoqi",
      "job": "it"
    }
    
    POST oldzhang/info/
    {
      "name": "ya",
      "age": "28",
      "pet": "xiaomin",
      "job": "it"
    }
    
    POST oldzhang/info/
    {
      "name": "xiaomin",
      "age": "26",
      "pet": "xiaowang",
      "job": "SM"
      
    }
    
    POST oldzhang/info/
    {
      "name": "hemengfei",
      "age": "38",
      "pet": "xiaohe",
      "job": "3P"
    }
    
    POST oldzhang/info/
    {
      "name": "xiaoyu",
      "age": "28",
      "pet": "bijiben",
      "job": "fly"
    }
    
    #简单查询
    GET oldzhang/_search/
    
    #条件查询
    GET oldzhang/_search
    {
      "query": {
        "term": {
          "name": {
            "value": "xiaomin"
          }
        }
      }
    }
    
    GET oldzhang/_search
    {
      "query": {
        "term": {
          "job": {
            "value": "it"
          }
        }
      }
    }
    
    #多条件查询
    GET /oldzhang/_search
    {
        "query" : {
          "bool": {
            "must": [
              {"match": {"pet": "xiaoqi"}},
              {"match": {"name": "zhang"}}
            ],
            "filter": {
              "range": {
                "age": {
                  "gte": 27,
                  "lte": 30
                }
              }
              }
            }
          }
        }
    }
    

    第三章 集群相关名词

    0.默认分片和副本规则
    5分片
    1副本
    
    1.集群健康状态
    绿色: 所有数据都完整,且副本数满足
    黄色: 所有数据都完整,但是副本数不满足
    红色: 一个或多个索引数据不完整
    
    2.节点类型
    主节点:        负责调度数据分配到哪个节点
    数据节点:   实际负责处理数据的节点
    默认:         主节点也是工作节点
    
    
    3.数据分片
    主分片:        实际存储的数据,负责读写,粗框的是主分片
    副本分片:   主分片的副本,提供读,同步主分片,细框的是副本分片
    
    
    4.副本:       
    主分片的备份,副本数量可以自定义
    

    第四章 部署ES集群

    1.安装java
    rpm -ivh jdk-8u102-linux-x64.rpm
    
    2.安装ES
    rpm -ivh elasticsearch-6.6.0.rpm
    
    3.配置ES配置文件
    配置内存锁定:
    systemctl edit elasticsearch.service
    [Service]
    LimitMEMLOCK=infinity
    
    集群配置文件:
    db01配置文件:
    cat > /etc/elasticsearch/elasticsearch.yml <<EOF
    cluster.name: linux5
    node.name: node-1
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: true
    network.host: 10.0.0.51,127.0.0.1
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
    discovery.zen.minimum_master_nodes: 1
    EOF
    ==================================================================
    db02配置文件:
    cat> /etc/elasticsearch/elasticsearch.yml <<EOF
    cluster.name: linux5
    node.name: node-2
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: true
    network.host: 10.0.0.52,127.0.0.1
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
    discovery.zen.minimum_master_nodes: 1
    EOF 
    
    4.启动
    systemctl daemon-reload
    systemctl restart elasticsearch
    
    5.查看日志
    tail -f /var/log/elasticsearch/linux5.log
    
    6.ES-head查看是否有2个节点
    

    第五章 ES集群相关注意

    注意事项:
    1.插入和读取数据在任意节点都可以执行,效果一样
    2.es-head可以连接集群内任一台服务
    
    3.主节点负责读写
    如果主分片所在的节点坏掉了,副本分片会升为主分片
    
    4.主节点负责调度
    如果主节点坏掉了,数据节点会自动升为主节点
    
    5. 查看集群各种信息
    GET _cat/nodes
    GET _cat/health
    GET _cat/master
    GET _cat/fielddata
    GET _cat/indices
    GET _cat/shards
    GET _cat/shards/oldzhang
    
    集群注意事项
    注意1:发现节点参数不需要把集群内所有的机器IP都加上
    只需要包含集群内任意一个IP和自己的IP就可以
    discovery.zen.ping.unicast.hosts: ["10.0.0.51","10.0.0.53"]
    
    注意2: 集群选举相关的参数需要设置为集群节点数的大多数
    discovery.zen.minimum_master_nodes: 2
    
    注意3: 默认创建索引为1副本5分片
    
    注意4: 数据分配的时候会出现2中颜色
    紫色: 正在迁移
    黄色: 正在复制
    绿色: 正常
    
    注意5: 3节点的时候
    0副本一台都不能坏
    1副本的极限情况下可以坏2台: 1台1台的坏,不能同时坏2台
    2副本的情况可以同时坏2台
    
    自定义副本分片和索引
    索引为2副本3分片
    索引为0副本5分片
    
    注意:
    索引一旦建立完成,分片数就不可以修改了
    但是副本数可以随时修改
    
    命令:
    
    1.创建索引的时候就自定义副本和分片
    PUT /yayayaay/
    {
      "settings": {
        "number_of_shards": 3, 
        "number_of_replicas": 0
      }
    }
    
    2.修改单个索引的副本数
    PUT /oldzhang/_settings/
    {
      "settings": {
        "number_of_replicas": 0
      }
    }
    
    3.修改所有的索引的副本数
    PUT /_all/_settings/
    {
      "settings": {
        "number_of_replicas": 0
      }
    }
    工作如何设置:
    2个节点: 默认就可以
    3个节点: 重要的数据,2副本 不重要的默认
    日志收集: 1副本3分片
    

    第六章 扩容第三台机器

    1.安装java
    rpm -ivh jdk-8u102-linux-x64.rpm
    
    2.安装ES
    rpm -ivh elasticsearch-6.6.0.rpm
    
    3.配置ES配置文件
    配置内存锁定:
    systemctl edit elasticsearch.service
    [Service]
    LimitMEMLOCK=infinity
    集群配置文件:
    db03配置文件:
    cat > /etc/elasticsearch/elasticsearch.yml <<EOF
    cluster.name: linux5
    node.name: node-3
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: true
    network.host: 10.0.0.53,127.0.0.1
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.53"]
    discovery.zen.minimum_master_nodes: 1
    EOF
    
    4.添加节点注意
    对于新添加的节点来说:  只需要直到集群内任意一个节点的IP和他自己本身的IP即可
    对于以前的节点来说:  什么都不需要更改
    
    5.最大master节点数设置
    3个节点,设置为2
    

    第七章 动态修改最小发现节点数

    GET _cluster/settings
    
    PUT _cluster/settings
    {
      "transient": {
        "discovery.zen.minimum_master_nodes": 2
      }
    }
    

    第八章 优化

    1.内存 
    不要超过32G 
    
    48内存 
    系统留一半: 24G 
    自己留一半: 24G
    8G 12G 16G 24G 30G 
    
    2.SSD硬盘
    0   1
    
    3.代码优化
    
    4.升级大版本
    

    第九章 监控

    3节点实验宕机一台机器,集群状态仍然为绿色
    监控注意,不能只监控集群状态
    1.监控节点数
    2.监控集群状态
    3.2者任意一个发生改变了都报警
    
    监控命令:
    GET _cat/nodes
    GET _cat/health
    

    第十章 增强插件x-pack监控功能!

    image.png

    第十一章 安全功能

    7.x版本以上有自带功能,或者使用search-guard插件
    

    第十二章 ES备份与恢复

    前提条件:
    必须要有Node环境和npm软件
    nodejs
    npm

    1.nodejs环境安装
    https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
    tar xf  node-v10.16.3-linux-x64.tar.xz -C /opt/node
    vim /etc/profile
    export PATH=/opt/node/bin:$PATH
    source /etc/profile
    [root@db-01 ~]# node -v
    v10.16.3
    [root@db-01 ~]# npm -v
    6.9.0
    
    2.指定使用国内淘宝npm源
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    
    3.安装es-dump
    cnpm install elasticdump -g
    
    4.备份命令
    备份成可读的json格式
    elasticdump \
      --input=http://10.0.0.51:9200/news2 \
      --output=/data/news2.json \
      --type=data
    
    备份成压缩格式
    elasticdump \
      --input=http://10.0.0.51:9200/news2 \
      --output=$|gzip > /data/news2.json.gz  
    
    备份分词器/mapping/数据一条龙服务
    elasticdump \
      --input=http://10.0.0.51:9200/news2 \
      --output=/data/news2_analyzer.json \
      --type=analyzer
    elasticdump \
      --input=http://10.0.0.51:9200/news2 \
      --output=/data/news2_mapping.json \
      --type=mapping
    elasticdump \
      --input=http://10.0.0.51:9200/news2 \
      --output=/data/news2.json \
      --type=data
      
    5.恢复命令 
    只恢复数据
    elasticdump \
      --input=/data/news2.json \
      --output=http://10.0.0.51:9200/news2
    
    恢复所有数据包含分词器/mapping一条龙
    elasticdump \
      --input=/data/news2_analyzer.json \
      --output=http://10.0.0.51:9200/news2 \
      --type=analyzer
    elasticdump \
      --input=/data/news2_mapping.json \
      --output=http://10.0.0.51:9200/news2 \
      --type=mapping
    elasticdump \
      --input=/data/news2.json \
      --output=http://10.0.0.51:9200/news2
      --type=data
      
    6.注意
    恢复的时候需要先解压缩成json格式 
    恢复的时候,如果已经存在相同的数据,会被覆盖掉
    如果新增加的数据,则不影响,继续保留
    
    7.批量备份
    curl -s 127.0.0.1:9200/_cat/indices|awk '{print $3}'
    

    第十三章 集群发现相关参数

    discovery.zen.fd.ping_timeout: 120s  
    discovery.zen.fd.ping_retries: 6  
    discovery.zen.fd.ping_interval: 30s  
    
    超时时间为120s
    重试次数为6次
    每次间隔30秒 
    

    第十四章 中文分词

    注意:ES是国外开发,不支持中文词语组合搜索

    未分词的情况:
    1.插入测试数据
    PUT /news
    
    POST /news/txt/1
    {"content":"美国留给伊拉克的是个烂摊子吗"}
    
    POST /news/txt/2
    {"content":"公安部:各地校车将享最高路权"}
    
    POST /news/txt/3
    {"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
    
    POST /news/txt/4
    {"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
    
    2.检测
    POST /news/_search
    {
        "query" : { "match" : { "content" : "中国" }},
        "highlight" : {
            "pre_tags" : ["<tag1>", "<tag2>"],
            "post_tags" : ["</tag1>", "</tag2>"],
            "fields" : {
                "content" : {}
            }
        }
    }
    3.得出结论
    默认没有中文分词器的时候ES并不认识中文,会把中文的词拆成一个一个的字
    
    分词配置
    0.前提条件
    - 所有的ES节点都需要安装
    - 所有的ES都需要重启才能生效
    
    1.配置中文分词器
    cd /usr/share/elasticsearch
    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
    
    本地文件安装
    /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///root/elasticsearch-analysis-ik-6.6.0.zip
    
    2.创建索引 
    PUT /news2
    
    3.创建模板
    POST /news2/text/_mapping
    {
            "properties": {
                "content": {
                    "type": "text",
                    "analyzer": "ik_max_word",
                    "search_analyzer": "ik_smart"
                }
            }
    
    }
    
    
    4.插入测试数据
    POST /news2/text/1
    {"content":"美国留给伊拉克的是个烂摊子吗"}
    
    POST /news2/text/2
    {"content":"公安部:各地校车将享最高路权"}
    
    POST /news2/text/3
    {"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
    
    POST /news2/text/4
    {"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
    
    5.再次查询数据发现已经能识别中文了
    POST /news2/_search
    {
        "query" : { "match" : { "content" : "世界" }},
        "highlight" : {
            "pre_tags" : ["<tag1>", "<tag2>"],
            "post_tags" : ["</tag1>", "</tag2>"],
            "fields" : {
                "content" : {}
            }
        }
    }
    

    第十五章 手动更新字典

    1.更新字典
    vi /etc/elasticsearch/analysis-ik/main.dic 
    
    2.把字典发送到集群内所有的机器
    scp main.dic 10.0.0.52:/etc/elasticsearch/analysis-ik/
    
    3.重启所有的ES节点!!!
    systemctl restart elasticsearch 
    
    4.更新索引的数据
    POST /news2/text/5
    {"content":"昨天胖虎很嚣张,让张亚请他吃饭"}
    
    5.搜索测试
    POST /news2/_search
    {
        "query" : { "match" : { "content" : "胖虎" }},
        "highlight" : {
            "pre_tags" : ["<tag1>", "<tag2>"],
            "post_tags" : ["</tag1>", "</tag2>"],
            "fields" : {
                "content" : {}
            }
        }
    }
    
    
    没更新字典之前
    字典里的词:中国
    插入语句:
    1.中国加油 武汉加油
    2.胖虎胖
    3.张亚好
    
    分词:
    1.中国
    2.胖 虎 胖
    3.张 亚 好
    
    更新了字典:
    中国
    张亚
    胖虎
    
    更新数据:
    1.中国
    2.张亚
    3.胖虎
    

    第十六章 热更新中文分词库

    1.安装nginx
    [root@db-01 ~]# cat /etc/yum.repos.d/nginx.repo 
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=0
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=0
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    
    yum makecache fast
    yum -y install nginx
    
    2.创建字典文件
    cat >>/usr/share/nginx/html/my_dic.txt<<EOF
    上海
    班长
    学委
    张亚
    胖虎
    EOF
    
    3.重启nginx
    nginx -t
    systemctl restart nginx 
    
    4.配置IK分词器
    [root@db01 /etc/elasticsearch/analysis-ik]# cat 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"></entry>
             <!--用户可以在这里配置自己的扩展停止词字典-->
            <entry key="ext_stopwords"></entry>
            <!--用户可以在这里配置远程扩展字典 -->
            <entry key="remote_ext_dict">http://10.0.0.51/my_dic.txt</entry>
            <!--用户可以在这里配置远程扩展停止词字典-->
            <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
    </properties>
    
    5.将修改好的配置发送到所有的ES节点
    cd /etc/elasticsearch/analysis-ik/
    scp IKAnalyzer.cfg.xml 10.0.0.52:/etc/elasticsearch/analysis-ik/
    
    6.重启所有的节点
    systemctl restart elasticsearch.service 
    
    7.查看日志发现重新加载字典完毕
    [2020-02-12T14:56:38,610][INFO ][o.w.a.d.Monitor          ] [node-1] 重新加载词典...
    [2020-02-12T14:56:38,611][INFO ][o.w.a.d.Monitor          ] [node-1] try load config from /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml
    [2020-02-12T14:56:38,614][INFO ][o.w.a.d.Monitor          ] [node-1] [Dict Loading] http://10.0.0.51/my_dic.txt
    [2020-02-12T14:56:38,628][INFO ][o.w.a.d.Monitor          ] [node-1] 上海
    [2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 班长
    [2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 学委
    [2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 张亚
    [2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 胖虎
    [2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 重新加载词典完毕...
    
    8.编写测试数据并搜索
    POST /news2/text/6
    {"content":"昨天胖虎很嚣张,把班长打了一顿并让班长请他吃饭"}
    
    POST /news2/_search
    {
        "query" : { "match" : { "content" : "班长" }},
        "highlight" : {
            "pre_tags" : ["<tag1>", "<tag2>"],
            "post_tags" : ["</tag1>", "</tag2>"],
            "fields" : {
                "content" : {}
            }
        }
    }
    
    9.测试新增加新词效果
    echo "武汉" >> /usr/share/nginx/html/my_dic.txt
    
    查看日志有没有重新加载字典
    tail -f /var/log/elasticsearch/linux.log
    
    10.编写测试语句
    POST /news2/text/7
    {"content":"武汉加油!"}
    
    
    POST /news2/_search
    {
        "query" : { "match" : { "content" : "武汉" }},
        "highlight" : {
            "pre_tags" : ["<tag1>", "<tag2>"],
            "post_tags" : ["</tag1>", "</tag2>"],
            "fields" : {
                "content" : {}
            }
        }
    }
    
    
    11.电商上架新产品流程
    先把新上架的商品的关键词更新到词典里
    查看ES日志,确认新词被动态更新了
    自己编写一个测试索引,插入测试数据,然后查看搜索结果
    确认没有问题之后,在让开发插入新商品的数据
    测试
    

    第十六章 中文分词(二)

    1.字典二次创建,因为原来的已经用原来的字典分配好了,不会加载新的词典进去分配

    cd /etc/elasticsearch/analysis-ik/
    mkdir custom
    cd custom
    [root@mongo-01 custom]# cat mydict.dic 
    地球
    chown -R elasticsearch:elasticsearch custom
    [root@db01 analysis-ik]# vim IKAnalyzer.cfg.xml 
    
    image.png

    2.重启配置文件

    systemctl restart elasticsearch
    

    相关文章

      网友评论

          本文标题:elasticsearch

          本文链接:https://www.haomeiwen.com/subject/ppymactx.html