赞
踩
Elasticsearch是一个基于Apache Lucene的开源搜索引擎。Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 特点: 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎–做不规则查询 可以扩展到上百台服务器,处理PB级结构化或非结构化数据 Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
ES官网:ElasticSearch官网
解压命令:tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz
移动解压后的文件到/usr/local/目录下:mv elasticsearch-7.4.2 /usr/local/
修改集群名称,默认是elasticsearch,虽然目前是单机,但
是也会有默认的
为当前的s节点取个名称,名称随意,如果在集群环境中,
都要有相应的名字
vim config/elasticsearch.yml
修改data数据保存地址
修改日志数据保存地址
/usr/local/elasticsearch-7.4.2/data
/usr/local/elasticsearch-7.4.2/logs
绑定es网络ip,原理同redis
默认端口号,可以自定义修改
集群节点,名字可以先改成之前的那个节点名称
默认xms和xmx都是1g,虚拟机内存没这么大,修改一下即可,线上环境内存大可以不修改!
ES不允许使用root操作es,需要添加用户,操作如下:
#添加用户
useradd esuser
#授权
chown -R esuser:esuser /usr/local/elasticsearch-7.4.2
su esuser
whoami
./elasticsearch
如果出现如下错误:
那么需要切换到oot用户下去修改配置如下:
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
刷新一下
最后再次启动OK
访问你的虚拟机ip+端口号9200,如下则表示OK
停止es
如果是前台启动,直接ctrl+c就可以停止
后台启动:
./elasticsearch -d
停止杀进程:
jps
kill+进程号
端口号意义
HOSTNAME | IP |
---|---|
es01 | 192.168.92.110 |
es02 | 192.168.92.111 |
es03 | 192.168.92.112 |
进入es的data目录下, 删除nodes数据
cd /usr/local/elasticsearch-7.4.2/data
rm nodes/ -rf
操作config文件, 修改ES核心配置文件中的cluster的name值为同一个
vim /usr/local/elasticsearch-7.4.2/config/elasticsearch.yml
node.master: true
node.data: true
discovery.seed_hosts: ["192.168.92.110", "192.168.92.111","192.168.92.112"]
cd /usr/local/elasticsearch-7.4.2/config/
more elasticsearch.yml | grep ^[^#]
分别进入用户 esuser
su esuser
./usr/local/elasticsearch-7.4.2/bin/elasticsearch
ik中文分词器和ES版本需要一致,安装方法一样
上传zip文件到我们的服务器
yum install -y unzip zip
安装zip工具,已安装可跳过
unzip elasticsearch-analysis-ik-6.4.3.zip -d /usr/local/elasticsearch-6.4.3/plugins/ik
cd /usr/local/elasticsearch-6.4.3/plugins/ik
jps
kill ***
su esuser
cd /usr/local/elasticsearch-6.4.3/bin
./elasticsearch -d
此分词器会将文本进行最细粒度的拆分, 比如将"中华人民共和国国歌"
拆分为"中华人民共和国",“中华人民”,“中华”,“华人”,“人民共和国”,“人民”,“人”,“民”,“共和国”,“共和”,“和”,“国国”,“国歌”
此分词器会将文本进行最粗粒度的拆分.
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。(当然,最喜欢的是Elasticsearch)
数据采集: 可以从数据库中采集到 Elasticsearch
以 自增id(不建议, 会无法识别修改的数据) 或者 update_time 作为同步的边界
可以通过新版 Elasticsearch 所集成的插件 logstash-input-jdbc 直接使用
使用logstash时候要与 Elasticsearch 的版本号保持一致
解压logstash: tar -zxvf logstash-6.4.3.tar.gz
移动 logstash: mv logstash-6.4.3 /usr/local/
进入该目录: cd /usr/local/logstash-6.4.3/
创建文件夹sync, 将相关的同步配置放在该文件夹下: mkdir sync
创建配置文件(后面会进行编辑, 这里进行创建): vim logstash-db-sync.conf
将数据库驱动进行拷贝到当前的目录下: cp /home/software/mysql-connector-java-5.1.41.jar .
创建sql存储文件: 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 AND i.updated_time >= :sql_last_value
进行修改配置文件 logstash-db-sync.conf: vim logstash-db-sync.conf
input { jdbc { # 设置 MySql/MariaDB 数据库url以及数据库名称 jdbc_connection_string => "jdbc:mysql://192.168.92.110: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.92.110:9200"] # 同步的索引名 index => "foodie-items" # 设置_docID和数据库中的id保持相同 document_id => "%{id}" # document_id => "%{itemId}" } # 日志输出 stdout { codec => json_lines } }
进入bin目录: cd /usr/local/logstash-6.4.3/bin
启动logstash: ./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf
后台启动:nohup ./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf > logstash.log 2>&1 &
logstash 只对新增和修改的数据可以进行同步, 而对于数据库中删除的数据是不会进行同步到es中的.
所以数据库中删除的数据, 它在es中只是通过更新时间的方式进行逻辑上的删除.
node.js下载
下载完安装即可
进入es-header目录(在目录按shift右击,打开powershell窗口)
npm install
npm run start
访问http://localhost:9100/ 发现跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。