elasticSearch 安装

elasticsearch 7.10.0 官方文档
安装环境:CentOS7.6 1核2G
预内存占用:1300M 左右

安装 java1.8

  1. yum install java-1.8.0-openjdk.x86_64 默认安装目录: /usr/lib/jvm
  2. 配置环境变量 vim /etc/profile
    # java
    # 第一项是 bin目录的上级目录路径
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jre
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib
    让配置立即生效 source /etc/profile
  3. 测试安装
    java -version
    echo $PATH 检查打印的路径是否存在

安装 elasticsearch

  1. 下载源码包并解压 约300M
    wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
    mv elasticsearch-7.10.0 /usr/local/
  2. 配置
    配置文件在 config 下的 elasticsearch.yml
    # 因只有一个服务器,所以如下配置
    node.name: node-1
    cluster.initial_master_nodes: ["node-1"]
    # 填写127.0.0.1或为了方便测试修改为所有ip都可以访问。端口默认9200,可修改如9508。
    network.host: 0.0.0.0
    http.port: 9508
    # 日志与数据保存路径,默认即是如下。这里不做修改。
    #path.data: /var/lib/elasticsearch
    #path.logs: /var/log/elasticsearch
  3. 出于安全考虑,es 不允许 root 启动,创建用户,并将 elasticsearch-7.10.0 文件夹拥有者赋予该用户。
    groupadd elsearch
    useradd elsearch -g elsearch
    chown -R elsearch:elsearch elasticsearch-7.10.0
  4. 启动后会报一些环境错误,只需要修改几项配置即可。
    切换到上面创建的 elsearch 用户启动:
    ./bin/elasticsearch
    通常会遇见下面三个错误:
    (1)可以创建的文件描述符数量过低 max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
    (2)用户可以创建的线程数太少 max number of threads [1024] for user [leyou] is too low, increase to at least [4096]
    (3)虚拟内存不足 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    打开一个新的 CMD 窗口登陆 root 去操作,解决如下:
    (1) vim /etc/security/limits.conf
    elsearch soft nproc 65535
    elsearch hard nproc 65535
    elsearch soft nofile 4096
    elsearch hard nofile 4096
    (2) cd /etc/security/limits.d && vim 20-nproc.conf
    elsearch  soft    nproc     4096
    #root    soft    nproc     unlimited
    (3) vim /etc/sysctl.conf
    # 末尾添加
    vm.max_map_count = 262144
    sysctl -p 使之生效
  5. 测试
    确保安全组与防火墙开放了对应的端口号。云服务器端口和防火墙端口配置
    当控制台出现 [node-1] started 说明启动成功,由于刚才配置 elasticsearch.yml 的时候,设置的所有 ip 都可以访问,浏览器输入 http://yourhost:9508/ 验证。

安装中文分词 ik

Github 地址 github.com/medcl/elasticsearch-ana...
注意要按照 Versions 部分与 es版本 的对应关系下载。

elasticSearch 学习记录

  1. 方法1
    按照官方文档的方式
    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.0/elasticsearch-analysis-ik-7.10.0.zip
  2. 方法2
    直接下载到 plugins 目录下的 ik目录 并解压即可,启动时会自动加载。
    elasticsearch 默认到 plugins/ik 目录下查找配置,默认没有 ik 目录,用 elsearch 用户手动创建文件夹。
    cd elasticsearch-7.10.0/plugins && mkdir ik && cd ik
    wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.0/elasticsearch-analysis-ik-7.10.0.zip

重新启动 es ,出现
[INFO ][o.e.p.PluginsService ] [node-1] loaded plugin [analysis-ik] 即加载了插件。

curl -X POST -H "Content-Type:application/json" http://127.0.0.1:9200/_analyze?pretty=true -d '{"text":"小可爱"}'
{
  "tokens" : [
    {
      "token" : "小",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<IDEOGRAPHIC>",
      "position" : 0
    },
    {
      "token" : "可",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "爱",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "<IDEOGRAPHIC>",
      "position" : 2
    }
  ]      
}

配置同义词词典

ES 支持加载包含同义词的文件。首先在 elasticsearch/config 目录下新建 analysis 目录(名称自定义),在 analysis 目录下新建 synonym.txt , 按照官方文档要求编码必须是 utf-8,通过 vim 编辑器设置文件字符集。

:set fileencoding=utf-8

文件内容如

china,China,中国

以下操作是不需要重建索引的,暂停所有索引

curl -X POST 127.0.0.1:9200/_all/_close

向索引增加配置项,以下为官方代码

curl -X PUT 127.0.0.1:9200/my_index/_settings
{
    "settings": {
        "index" : {
            "analysis" : {
                "analyzer" : {
                    "synonym" : {
                        "tokenizer" : "whitespace",
                        "filter" : ["synonym"]
                    }
                },
                "filter" : {
                    "synonym" : {
                        "type" : "synonym",
                        "synonyms_path" : "analysis/synonym.txt"
                    }
                }
            }
        }
    }
}

上边格式转为命令行格式

curl -X PUT -H "Content-Type:application/json" 127.0.0.1:9507/hots_index/_settings -d '{"settings": {"index" : {"analysis" : {"analyzer" : {
"synonym" : {"tokenizer" : "whitespace","filter" : ["synonym"]}},"filter" : {"synonym" : {"type" : "synonym","synonyms_path" : "analysis/synonym.txt"}}}}}}'

开启索引

curl -X POST 127.0.0.1:9200/_all/_open

测试

curl -X POST -H "Content-Type:application/json" 127.0.0.1:9200/my_index/_analyze -d '{"analyzer": "synonym","text": "china"}'

END

本作品采用《CC 协议》,转载必须注明作者和本文链接
focus
讨论数量: 2

容器化不香吗?还真机装!

1个月前 评论
php_yt (楼主) 1个月前

为什么不在 JAVA 的社区下发呢= =。

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!