Elasticsearch(集群)+Logstash+Java整合实现Word、PDF,TXT等文件的全文内容检索功能-Linux版

一:elasticsearch7.16.2集群部署

服务器提供:3台linux服务器(例如:127.0.0.1、127.0.0.2、127.0.0.3)

策略开通: 确保1127.0.0.1、127.0.0.2、127.0.0.3 与 128.0.0.1( mysql所在服务器) 之间相互通信正常(如:9201、9202、9203、9301、9302、9303端口可用)

目标:

1. 127.0.0.1 服务器部署es集群的第一个结点 node-1, 127.0.0.2 部署es集群的第二个结点 node-2,127.0.0.3部署es集群的第三个结点 node-3。 (注意:如果测试环境只有一台服务器,也可以部署集群,只不过此时部署的是伪集群,为防止端口占用,需将每个结点的对外端口设置不一样)

2. 在ngix 上配置 node-1, node-2, node-3三个结点的地址,实现负载均衡对外提供一个统一的访问ip。

3. 在windows服务器安装可以查看es的可视化工具(选择性安装kibana 或ElasticHD 或 直接通过浏览器查看:http://135.0.0.1/WEB/es/_search?)(注意:135.0.0.1是ngix所在服务器,允许对外访问)

4. 127.0.0.1 再部署logstash(实现将mysql数据同步到es里)。

elasticsearch-linux版安装包下载(可去es官网下):

elasticsearch-linux-x86-64版本-Java文档类资源-CSDN下载

logstash-linux版安装包下载(可去es官网下):

logstash-7.16.2-linux-x86-64版-Java文档类资源-CSDN下载

logstash的配置文件实例请下载:

https://download.csdn.net/download/m0_37951794/87897239

部署127.0.0.1(node-1结点)

1. 用非root用户登录服务器(原因: es必须非root用户才能启动成功)

例如:用 esuser 用户登录

2. 用 esuser用户登录后,在 /home/esuser/ 目录下新建es文件夹,将elasticsearch-7.16.2.tar.gz的安装包上传到 /home/esuser/es/目录下解压:

tar -zcvf elasticsearch-7.16.2.tar.gz

如果上传的是elasticsearch-7.16.2.zip 则用如下命令解压:

unzip elasticsearch-7.16.2.zip

如果上传的是elasticsearch-7.16.2.tar 则用:

tar -xvf elasticsearch-7.16.2.tar

3. 解压后修改配置文件(数据路径、日志路径、对外端口9201,集群内部交流端口9301):

配置文件内容:/home/esuser/es/elasticsearch-7.16.2/config/elasticsearch.yml

 4. 切换到root用户身份修改 sysctl.conf文件:

 su root

5. 编辑 /etc/sysctl.conf文件,在最后面追加一下内容:

vm.max_map_count=655360      (或者 262144)

当文件保存后执行: sysctl -p 

6. 在 elasticsearch.yml 文件配置好的前提下,用 esuser 身份进入/elasticsearch-7.16.2/bin/ 目录,启动 es 应用。

./elasticsearch -d

7. 检查应用是否正常启动

查看进程: ps -ef|grep elasticsearch

或者访问ur(如下图则启动正常): curl: http://localhost:9201

关闭进程: kill -9 进程号

另外: 如果后面集群 有结点没有加入进来,则:

将该结点下存放数据的/elasticsearch/data/nodes文件夹删除,再重启该结点即可。 

 部署127.0.0.2(node-2结点)

1. 步骤与上面结点1 基本一致,不同点在于 配置文件内容不同:

部署127.0.0.3(node-3结点)

 1. 步骤与上面结点1 基本一致,不同点在于 配置文件内容不同:

二:logstash部署

部署127.0.0.1(logstash数据同步)

1. 进入/home/esuser/es/目录,将 logstash-7.16.2.zip 的安装包上传到该目录下解压

unzip logstash-7.16.2.zip

2. 编辑logstash.conf文件的内容并将该文件放到/home/esuser/es/logstash-7.16.2/bin/目录下,如已提前配置好则无需操作此步骤

vim logstash.conf

保存并退出: 按ESC后,   :wq 或 :x

不保存退出: 按ESC后,    :q!

3. 将 连接 mysql 的驱动 mysql-connector-java-5.1.39.jar 放到 /logstash-7.16.2/bin 目录下。

4. 进入logstash-7.16.2/bin/ 目录,启动应用:

前台启动命令(验证时使用): ./logstash -f logstash.conf

后台启动命令(正式运行时使用): nohup ./logstash -f logstash.conf 2>&1 &

5. 检查应用是否正常启动

查看进程: ps -ef|grep logstash

关闭进程: kill -9 进程号

如下图则说明启动成功(前台启动验证时可看到):

6. 查看日志: /logstash-7.16.2/logs/logstash-plain.log

cat logstash-plain.log | grep '关键字'

(135.0.0.1)在nginx上配置es代理地址:

upstream esserver {

server 127.0.0.1:9201;      

server 127.0.0.2:9202;    

server 127.0.0.3:9203;  

}

server  {

     listen                 8000;

     server_name    localhost;

     location /WEB/app/ {   省略  }

     location /WEB/es/ {

          proxy_pass http://esserver;

          rewrite ^.+WEB/es/?(.*)$ /$1 break;

          proxy_set_header Host $host;

          proxy_set_header X-Real-IP $remote_addr;

          proxy_set_header x-forwarded-for $remote_addr;

      }

}

最后再浏览器查看验证es集群是否能正常访问

http://135.0.0.1: 8000/WEB/es/_search?

查看集群是否部署正常: curl http://127.0.0.1:9201/_cat/health?v

curl http://135.0.0.1:8000/IWEB/es/_cat/health?v

提供给java接口调用的引擎地址:

es_ip = 135.0.0.1

es_port = 8000

es_http = http

java调用引擎:

RestClient restClient = RestClient.builder(
    new HttpHost("135.0.0.1",8000,"http")).setPathPrefix("WEB/es/").build();
RestClientTransport transport = new RestClientTransport(restClient,new 
    JacksonJsonpMapper());
return new ElasticsearchClient(transport);

结束!

补充: 

1. logstash所在服务器内存占用超出范围,则 将 logstash目录里的jvm.option的最小最大值设置为: 256m  512m

2.查看内存占用情况:

ps auxw | head -1 ; ps auxw  |sort  -rn  -k4|head  -200  |grep  -e 'kkFileView'

 -e  'elasticsearch'  -e  'LibreOffice'  -e  'logstash'

3. nginx 启停命令:

a: 停止前端nginx

-- 验证nginx配置文件:

/usr/nginx/sbin/nginx -t

-- 停止nginx服务:

/usr/nginx/sbin/nginx -s stop

b: 启动nginx

-- 启动nginx应用:

/usr/nginx/sbin/nginx  -c  /usr/nginx/conf/nginx.conf

-- 验证是否启动成功:

curl 127.0.0.1:8000/nginx-status

c: 不启动只重载nginx:

/usr/nginx/sbin/nginx -s reload

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringBoot是一种快速构建基于Spring框架的Java应用程序的工具。为了实现wordpdftxt文件的非结构化数据全文内容检索,可以使用SpringBoot和Elasticsearch(ES)来实现Elasticsearch是一种开源搜索引擎,其使用简单、快速高效、支持几乎所有类型的查询操作。 首先,需要将wordpdftxt文件的非结构化数据存储到ES中。可以使用Java中的POI、Apache Tika等工具来解析这些文件,将其转换为需要的文本格式,并将其存储到ES中。可以使用Spring Data Elasticsearch实现与ES的交互,并创建一个Document对象来表示每个文件。 其次,需要编写一个查询方法来搜索这些文件。可以使用ES提供的全文检索功能,使用户可以搜索其内容并找到与搜索关键字相关联的文件。可以使用Spring Data Elasticsearch来创建查询对象并执行查询,将结果返回给用户。 需要注意的是,对于WordPDF等二进制文件,需要将其转换为文本格式,而对于文本文件,只需将其直接存储到ES中。此外,还需考虑一些优化措施,如数据分片、数据备份和恢复等,以确保数据的完整性和可靠性。 最后,SpringBoot和ES的集成可以大大简化非结构化数据全文内容检索的开发和部署工作。它不仅可以提高检索效率,还可以保证数据的高可靠性和安全性。因此,它是一种非常有用的工具,可以满足企业的数据检索和管理需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他山之石女士

你一元我一元,是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值