Elasticsearch 搜索引擎
简介:
Elasticsearch 是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据、它可以用于全文搜索,结构化搜索以及分析。
分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
实时分析的分布式搜索引擎。
可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
一、安装 Elasticsearch
shell > yum -y install java # 需要 java 环境 shell > java -version
openjdk version "1.8.0_101"
OpenJDK Runtime Environment (build 1.8.0_101-b13)
OpenJDK -Bit Server VM (build 25.101-b13, mixed mode) shell > useradd elast # 用于启动 elasticsearch
shell > cd /usr/local/src
shell > wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.0/elasticsearch-2.4.0.tar.gz shell > tar zxf elasticsearch-2.4..tar.gz
shell > mv elasticsearch-2.4. ../elasticsearch-2.4. shell > chown -R elast.elast /usr/local/elasticsearch
二、配置 Elasticsearch
shell > vim /usr/local/elasticsearch/conf/elasticsearch.yml cluster.name: es # 集群名称 node.name: node- # 节点名称,默认第一个启动的节点为集群 Master path.data: /data/esearch/data # 索引存放路径
path.logs: /data/esearch/logs # 日志 network.host: 192.168.1.32 # 监听地址
http.port: # 端口 shell > mkdir /data/esearch/data
shell > mkdir /data/esearch/logs shell > chown -R elast.elast /data/esearch/data
shell > chown -R elast.elast /data/esearch/logs shell > vim /usr/local/elasticsearch/bin/elasticsearch.in.sh if [ "x$ES_MIN_MEM" = "x" ]; then
ES_MIN_MEM=256m
fi
if [ "x$ES_MAX_MEM" = "x" ]; then
ES_MAX_MEM=2g
fi
# 设置一下允许 elasticsearch 使用的最大/最小内存
三、启动 Elasticsearch
shell > su - elast -c "/usr/local/elasticsearch-2.4.0/bin/elasticsearch -d" # 以 elast 用户身份启动,否则报错 shell > echo 'su - elast -c "/usr/local/elasticsearch-2.4.0/bin/elasticsearch -d"' >> /etc/rc.local # 加入开机启动 shell > killall java # 因为我的服务器上只跑一个 java 程序,就是 elasticsearch ,所以我这样关闭 shell > netstat -lnpt | grep java
tcp ::: :::* LISTEN /java
tcp ::: :::* LISTEN /java shell > tree /data/esearch/ # 数据(索引)目录、日志目录
/data/esearch/
├── data
│ └── my-esearch
│ └── nodes
│ └──
│ ├── node.lock
│ └── _state
│ └── global-.st
└── logs
├── my-esearch_deprecation.log
├── my-esearch_index_indexing_slowlog.log
├── my-esearch_index_search_slowlog.log
└── my-esearch.log shell >ps aux | grep java
elast 3.7 6.6 ? Sl : : /usr/bin/java -Xms256m -Xmx2g -Djava.awt.headless=true\
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction= -XX:+UseCMSInitiatingOccupancyOnly\
-XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF- -Djna.nosys=true -Des.path.home=/usr/local/elasticsearch-2.4.\
-cp /usr/local/elasticsearch-2.4./lib/elasticsearch-2.4..jar:/usr/local/elasticsearch-2.4./lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
# 可以看到启动参数中有前面内存的设定 -Xms256m -Xmx2g
四、测试 Elasticsearch
shell > curl -X GET localhost: # 返回 elasticsearch 基本信息,节点名称、版本信息等
{
"name" : "node-1",
"cluster_name" : "es",
"version" : {
"number" : "2.4.0",
"build_hash" : "ce9f0c7394dee074091dd1bc4e9469251181fc55",
"build_timestamp" : "2016-08-29T09:14:17Z",
"build_snapshot" : false,
"lucene_version" : "5.5.2"
},
"tagline" : "You Know, for Search"
} shell > curl -X GET localhost:/_cat # 支持的各指令
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository} shell > curl -X GET 127.0.0.1:/_cat/master?v # 查看 Master 信息,加 ?v 可以显示表头
id host ip node
7EkYmW84S8aELlXvieV5uw 192.168.1.32 192.168.1.32 node- shell > curl -X GET localhost:/_cat/nodes?v # 集群节点信息
host ip heap.percent ram.percent load node.role master name
192.168.1.32 192.168.1.32 0.12 d * node-
五、Elasticsearch 插件安装
shell > /usr/local/elasticsearch/bin/plugin list # 查看 Elasticsearch 安装了哪些插件,结果一个也没有
Installed plugins in /usr/local/elasticsearch/plugins:
- No plugin detected
1、head 集群管理插件
shell > /usr/local/elasticsearch/bin/plugin install mobz/elasticsearch-head # 安装一个插件,用于集群管理 # 一些插件地址:
# https://github.com/mobz/elasticsearch-head # 可直接安装
# https://github.com/medcl/elasticsearch-analysis-ik # 需要自己打包 mvn package shell > /usr/local/elasticsearch/bin/plugin list # 再次查看
Installed plugins in /usr/local/elasticsearch/plugins:
- head ## http://192.168.1.32:9200/_plugin/head 浏览器访问 head 集群管理插件
2、中文分词插件
# 这里先留空一个知识点:maven 的安装跟怎么给中文分词器编译打包。
shell > cd /usr/local/src/
shell > wget https://github.com/medcl/elasticsearch-analysis-ik/archive/master.zip # 下载中文分词插件
shell > unzip elasticsearch-analysis-ik-master.zip
shell > cd elasticsearch-analysis-ik-master
shell > mvn package # 将分词器源码编译成 jar 包,过程有点长 ( 打包失败的,可以加我 QQ:25152069 ,我有打好的包 )
shell > cp target/releases/elasticsearch-analysis-ik-1.10..zip /usr/local/elasticsearch-2.4./plugins/ik/ # ik 目录不存在就创建一下
shell > cd /usr/local/elasticsearch-2.4./plugins/ik
shell > unzip elasticsearch-analysis-ik-1.10..zip
shell > killall java
shell > su - elast -c "/usr/local/elasticsearch-2.4.0/bin/elasticsearch" shell > /usr/local/elasticsearch-2.4./bin/plugin list # 再次查看插件已经安装成功
Installed plugins in /usr/local/elasticsearch-2.4./plugins:
- head
- ik
六、配置 Elasticsearch 集群
1、node1 ( 默认的 Master )
shell > grep -vP '^#|^$' /usr/local/elasticsearch-2.4./config/elasticsearch.yml
cluster.name: es # 集群名称必须一致,且同一局域网内可以自动组成集群
node.name: node- # 节点名称唯一
path.data: /data/esearch/data
path.logs: /data/esearch/logs
network.host: 192.168.1.32
http.port:
discovery.zen.ping.unicast.hosts: ["192.168.1.33"] # 指定谁可以成为 Master
2、node2 ( 默认的 node )
shell > grep -vP '^#|^$' /usr/local/elasticsearch-2.4./config/elasticsearch.yml
cluster.name: es
node.name: node- # 节点名称唯一
path.data: /data/esearch/data
path.logs: /data/esearch/logs
network.host: 192.168.1.33
http.port:
discovery.zen.ping.unicast.hosts: ["192.168.1.32"] # 指定谁可以成为 Master
## 注意:
> 如果不指定谁可以成为 Master ,那么默认两个节点都是 Master ,无法构成集群。新加入的节点不设置该参数,无法加入到现有集群。
> 如果被指定的节点设置了 node.master: false ,那么该节点无法成为 Master ,如果只有两个节点,当 Master 挂掉,那么集群失败。
> 防火墙:开启 TCP 9200 :为了使用web浏览集群状态等,TCP 9300 :用于节点直接通信。
3、查看集群状态
shell > curl -X GET 192.168.1.32:/_cat/master?v # 查看谁是 Master
id host ip node
9RVF5M9lRDuvhzKNF5VjXA 192.168.1.32 192.168.1.32 node- shell > curl -X GET 192.168.1.32:/_cat/nodes?v # 查看各节点状态,* 代表该节点是 Master ,m 代表该节点可以成为 Master ,- 代表该节点不可以成为 Master
host ip heap.percent ram.percent load node.role master name
192.168.1.33 192.168.1.33 0.36 d m node-
192.168.1.32 192.168.1.32 0.49 d * node-
# End
Elasticsearch 搜索引擎的更多相关文章
- elasticsearch搜索引擎环境的搭建
elasticsearch 搜索引擎 解决了什么问题:在我们数据量很大时,我们使用模糊查询会使索引列的索引消失,这样使用elasticsearch来提高查询效率. 存在什么问题:有时我们查询的词,el ...
- 第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索
第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到 ...
- 第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页
第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页 逻辑处理函数 计算搜索耗时 在开始搜索前:start_time ...
- 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能
第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...
- 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能
第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...
- 第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中
第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中 前面我们讲到的elasticsearch( ...
- 第三百六十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询
第三百六十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询 bool查询说明 filter:[],字段的过滤,不参与打分must:[] ...
- 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询
第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...
- 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理
第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...
- 第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作
第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作 注意:前面讲到的各种操作都是一次http请求操作一条数据,如果想 ...
随机推荐
- 每天一个linux命令(文件操作):【转载】find命令之exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...
- AngularX 指令(ngForof)(转载)
该指令用于基于可迭代对象中的每一项创建相应的模板.每个实例化模板的上下文对象继承于外部的上下文对象,其值与可迭代对象对应项的值相关联. NgForOf 指令语法 * 语法糖 <li *ngFor ...
- JSP学习(三)JSP中的九个内置对象
JSP中的九个内置对象 NO. 内置对象 类型 1 pageContext javax.servlet.jsp.PageContext 2 request javax.servlet.http.Htt ...
- BZOJ3747 POI2015 Kinoman 【线段树】*
BZOJ3747 POI2015 Kinoman Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[ ...
- 如何在 .NET 库的代码中判断当前程序运行在 Debug 下还是 Release 下
我们经常会使用条件编译符 #if DEBUG 在 Debug 下执行某些特殊代码.但是一旦我们把代码打包成 dll,然后发布给其他小伙伴使用的时候,这样的判断就失效了,因为发布的库是 Release ...
- 《DSP using MATLAB》示例Example7.7
Type-4 Linear-Phase FIR filter 代码: h = [-4, 1, -1, -2, 5, 6, -6, -5, 2, 1, -1, 4]; M = length(h); n ...
- Sql Server 2012 存储过程的调试
[一]Sql Server 关于存储过程调试SQL2000是在查询分析器中的对象浏览器中选中需要调试的存储过程,右键----调试---输入参数开始调试.sqlserver2008中则完全不同,变成了必 ...
- RK3288 增加双屏异显 eDP+LVDS
CPU:RK3288 系统:Android 5.1 下面是官方文档中的信息. 1.rk3288 支持的显示接口可以任意组合. 2.双屏异显时,一个显示接口当主屏,另一个当副屏:主副屏由板级 dts 文 ...
- 阻塞队列之六:LinkedBlockingDeque
一.LinkedBlockingDeque简介 java6增加了两种容器类型,Deque和BlockingDeque,它们分别对Queue和BlockingQueue进行了扩展. Deque是一个双端 ...
- 【学习笔记】dp基础
知识储备:dp入门. 好了,完成了dp入门,我们可以做一些稍微不是那么裸的题了. dp基础,主要是做题,只有练习才能彻底掌握. 洛谷P1417 烹调方案 分析:由于时间的先后会对结果有影响,所以c[i ...