分布式搜索引擎Elasticsearch之linux环境下安装Elasticsearch详细步骤 Elasticsearch中文分词器 Logstash数据同步

一、将下载好的Elasticsearch包上传到Linux的目录,通过tar -zvxf 文件名解压
二、将解压好的文件复制到自己喜欢的目录(可以省略)

mv elasticsearch-7.4.2 /usr/local/

三、进入 elasticsearch-7.4.2 目录创建一个data目录,作为数据目录

cd elasticsearch-7.4.2/

mkdir data

四、进入config目录对elasticsearch.yml 核心文件进行修改(当前在elasticsearch-7.4.2目录)

1.cd config 

2.vim elasticsearch.yml

3.修改文件内容
cluster.name: elasticsearch  #描述定义一个名称,我这里定义的为elasticsearch

node.name: es-node1 #节点名称

path.data: /usr/local/elasticsearch-7.4.2/data
 #配置数据文件位置 data为之前我自己创建的

path.logs: /usr/local/elasticsearch-7.4.2/logs #配置日志文件

network.host: 0.0.0.0

http.port: 9200 #放开端口号

cluster.initial_master_nodes: ["es-node1"] #配置访问的节点 es-node1为之前自己设置的名字

五、由于我在虚拟机中内存比较小,需要修改jvm.options

-Xms128M
-Xmx128M #修改为128 如果内存较大不用管

六、root用户不能使用es当前我就是root用户所以需要重新创建一个用户
whoami可以查看哪个用户

1. useradd esuser #创建用户
2.  chown -R esuser /usr/local/elasticsearch-7.4.2 #对该用户进行授权
3. esuser就可以操作es了

七、切换到esuser用户启动es,启动的时候报了错,标识没有权限

Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

切换的root用户,赋权

chown -R esuser:esuser /usr/local/elasticsearch-7.4.2

赋权后启动发生了一些异常,需要修改一下配置文件(root用户修改)

vim /etc/security/limits.conf

加入以下内容

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
vim /etc/sysctl.conf

加入以下内容

vm.max_map_count=262145

刷新一下sysctl -p

切换到esusr用户继续启动 ./elasticsearch 启动成功

七、Elasticsearch分词器
1.把下载好的分词器压缩包传到linux服务器,然后解压到Elasticsearch的plugins的ik下,然后重启就可以使用了,发现可视化工具不能访问,在elasticsearch.yml加入

http.cors.enablesd: true
http.cors.allow-origin: "*"
unzip elasticsearch-analysis-ik-7.4.2.zip  -d /usr/local/elasticsearch-7.4.2/plugins/ik

2.验证中文分词器,posman访问

地址:
http://192.168.152.139:9200/_analyze
内容:
{
    "analyzer":"ik_max_word",
    "text":"我爱你是忠于自己忠于爱情的信仰"
}
结果:
{
    "tokens": [
        {
            "token": "我爱你",
            "start_offset": 0,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 0
        },
        {
            "token": "爱你",
            "start_offset": 1,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 1
        },
        {
            "token": "时",
            "start_offset": 3,
            "end_offset": 4,
            "type": "CN_CHAR",
            "position": 2
        },
        {
            "token": "忠于",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "自己",
            "start_offset": 6,
            "end_offset": 8,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "忠于",
            "start_offset": 8,
            "end_offset": 10,
            "type": "CN_WORD",
            "position": 5
        },
        {
            "token": "爱情",
            "start_offset": 10,
            "end_offset": 12,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "的",
            "start_offset": 12,
            "end_offset": 13,
            "type": "CN_CHAR",
            "position": 7
        },
        {
            "token": "信仰",
            "start_offset": 13,
            "end_offset": 15,
            "type": "CN_WORD",
            "position": 8
        }
    ]
}
解释:ik_max_word时会将文本做最细的拆分,ik_smart时会做最粗拆分

3.自定义分词器,假如骚年不能最为词汇收出来,那就需要配一下。
进入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">custom.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

解释:在同目录下(就是config目录)创建一个custom.dic文件
custom.dic文件中放入自己的词汇如*骚年*,再次收索即可出现*骚年*这个词汇

八、 Logstash数据同步
1.以id或update_time作为同步边界
2.logstash-input-jdbc 插件
3.预先创建索引
步骤
1.将logstash和mysql驱动包上传到服务器解压
2.进入logstash目录创建一个sync的文件夹

mkdir sync #在logstash-6.4.3目录下

3.进入sync目录创建配置文件

cd sync

vim logstash-db-sync.conf

logstash-db-sync.conf文件内容

input {
    jdbc {
        # 设置 MySql/MariaDB 数据库url以及数据库名称
        jdbc_connection_string => "jdbc:mysql://192.168.1.6:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"
        # 用户名和密码
        jdbc_user => "root"
        jdbc_password => "root"
        # 数据库驱动所在位置,可以是绝对路径或者相对路径
        jdbc_driver_library => "/usr/local/logstash-6.4.3/sync/mysql-connector-java-5.1.41.jar"
        # 驱动类名
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        # 开启分页
        jdbc_paging_enabled => "true"
        # 分页每页数量,可以自定义
        jdbc_page_size => "1000"
        # 执行的sql文件路径
        statement_filepath => "/usr/local/logstash-6.4.3/sync/foodie-items.sql"
        # 设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
        schedule => "* * * * *"
        # 索引类型
        type => "_doc"
        # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件
        use_column_value => true
        # 记录上一次追踪的结果值
        last_run_metadata_path => "/usr/local/logstash-6.4.3/sync/track_time"
        # 如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间
        tracking_column => "updated_time"
        # tracking_column 对应字段的类型
        tracking_column_type => "timestamp"
        # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录
        clean_run => false
        # 数据库字段名称大写转小写
        lowercase_column_names => false
    }
}
output {
    elasticsearch {
        # es地址
        hosts => ["192.168.1.187:9200"]
        # 同步的索引名
        index => "foodie-items"
        # 设置_docID和数据相同
        document_id => "%{id}"
        # document_id => "%{itemId}" #与数据库id 对应
    }
    # 日志输出
    stdout {
        codec => json_lines
    }
}

4.将数据库启动拷贝到sync目录中

cp /home/softwore/mysql-connector-java-5.1.41.jar  . #因为我当前在sync目录中结尾用  .

创建 foodie-items.sql文件放入以下内容

SELECT
            i.id as itemId,
            i.item_name as itemName,
            i.sell_counts as sellCounts,
            ii.url as imgUrl,
            tempSpec.price_discount as price,
						i.updated_time as updated_time
        FROM
            items i
        LEFT JOIN
            items_img ii
        on
            i.id = ii.item_id
        LEFT JOIN
            (SELECT item_id,MIN(price_discount) as price_discount from items_spec GROUP BY item_id) tempSpec
        on
            i.id = tempSpec.item_id
        WHERE
            ii.is_main = 1
						i.updated_time>= :sql_last_value 
		
解释:sql_last_value 变量给logstash用的

5.bin文件下启动

./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值