需求:上百万的doc文档的搜索
使用软件:Elasticsearch 7.3.0/Elasticsearch-head 5/Fscrawler
Elasticsearch:
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
帮助文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/index.html
Elasticsearch-head:
elasticsearch-head是一个elasticsearch的集群管理、数据可视化、增删查改、查询语句可视化的工具,它是完全由html5编写的独立网页程序。
Fscrawler:
Elasticsearch文件系统爬虫( FS爬虫),可读取doc,pdf等.
帮助文档:https://fscrawler.readthedocs.io/en/latest/
0x1
安装Elasticsearch
先安装Elasticsearch,其实官网也有介绍.再次稍微翻译一下.
修改内存权限(linux下)
sysctl -w vm.max_map_count=262144
下载镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.0
编辑docker-compose.yml文件
新建文件夹.内放入docker-compose.yml
文件
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
container_name: es01
environment:
- node.name=es01
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
container_name: es02
environment:
- node.name=es02
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet
volumes:
esdata01:
driver: local
esdata02:
driver: local
networks:
esnet:
终端下执行docker-compose up
即可,在docker ps
内可看到镜像运行
修改跨域访问
docker exec -it es01 bash
vim ./config/elasticsearch.yml
加入以下两段
http.cors.enabled: true
http.cors.allow-origin: "*"
退出,重启镜像
docker restart es01
0x2
运行Elasticsearch-Head
下载镜像
docker pull mobz/elasticsearch-head:5
创建
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
开运行
docker start elasticsearch-head
然后在地址栏输入es地址链接就ok了

0x3
使用Fscrawler
下载
ESv7 对应的版本,找最新的.https://oss.sonatype.org/content/repositories/snapshots/fr/pilato/elasticsearch/crawler/fscrawler-es7/2.7-SNAPSHOT/
文章发布时使用的是fscrawler-es7-2.7-20190724.065618-41.zip
wget https://oss.sonatype.org/content/repositories/snapshots/fr/pilato/elasticsearch/crawler/fscrawler-es7/2.7-SNAPSHOT/fscrawler-es7-2.7-20190724.065618-41.zip
解压
unzip fscrawler-es7-2.7-20190724.065618-41.zip
生成项目
项目名称暂以doc_data
,可以根据自己需要修改为自己的项目名称
./bin/fscrawler doc_data
编辑项目文件
vim ~/.fscrawler/doc_data/_settings.yaml
修改如下几个地方
---
name: "doc_data"
fs:
url: "/root/doc/" #文档的路径
update_rate: "15m" #多长时间读取一次
excludes:
- "*/~*"
json_support: false
filename_as_id: false
add_filesize: true
remove_deleted: true
add_as_inner_object: false
store_source: false
index_content: true
attributes_support: false
raw_metadata: false
xml_support: false
index_folders: true
lang_detect: false
continue_on_error: false
ocr:
language: "eng"
enabled: true
pdf_strategy: "ocr_and_text"
follow_symlinks: false
elasticsearch:
nodes:
- url: "http://127.0.0.1:9200" #es节点的地址
bulk_size: 100
flush_interval: "5s"
byte_size: "10mb"
具体可参照Fs本地文件帮助
启动项目
./bin/fscrawler doc_data
0x4 小结
docker内最新版本号可上Docker hub查询.
如有什么错误,请留言指出.谢谢!