简介:

Elasticsearch 是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据、它可以用于全文搜索,结构化搜索以及分析。
 
  分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

实时分析的分布式搜索引擎。

可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

下载地址:https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.0/elasticsearch-2.4.0.tar.gz

一、安装 Elasticsearch

  1. shell > yum -y install java # 需要 java 环境
  2.  
  3. shell > java -version
  4. openjdk version "1.8.0_101"
  5. OpenJDK Runtime Environment (build 1.8.0_101-b13)
  6. OpenJDK -Bit Server VM (build 25.101-b13, mixed mode)
  7.  
  8. shell > useradd elast # 用于启动 elasticsearch
  9. shell > cd /usr/local/src
  10. shell > wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.0/elasticsearch-2.4.0.tar.gz
  11.  
  12. shell > tar zxf elasticsearch-2.4..tar.gz
  13. shell > mv elasticsearch-2.4. ../elasticsearch-2.4.
  14.  
  15. shell > chown -R elast.elast /usr/local/elasticsearch

二、配置 Elasticsearch

  1. shell > vim /usr/local/elasticsearch/conf/elasticsearch.yml
  2.  
  3. cluster.name: es # 集群名称
  4.  
  5. node.name: node- # 节点名称,默认第一个启动的节点为集群 Master
  6.  
  7. path.data: /data/esearch/data # 索引存放路径
  8. path.logs: /data/esearch/logs # 日志
  9.  
  10. network.host: 192.168.1.32 # 监听地址
  11. http.port: # 端口
  12.  
  13. shell > mkdir /data/esearch/data
  14. shell > mkdir /data/esearch/logs
  15.  
  16. shell > chown -R elast.elast /data/esearch/data
  17. shell > chown -R elast.elast /data/esearch/logs
  18.  
  19. shell > vim /usr/local/elasticsearch/bin/elasticsearch.in.sh
  20.  
  21. if [ "x$ES_MIN_MEM" = "x" ]; then
  22. ES_MIN_MEM=256m
  23. fi
  24. if [ "x$ES_MAX_MEM" = "x" ]; then
  25. ES_MAX_MEM=2g
  26. fi

# 设置一下允许 elasticsearch 使用的最大/最小内存

三、启动 Elasticsearch

  1. shell > su - elast -c "/usr/local/elasticsearch-2.4.0/bin/elasticsearch -d" # 以 elast 用户身份启动,否则报错
  2.  
  3. shell > echo 'su - elast -c "/usr/local/elasticsearch-2.4.0/bin/elasticsearch -d"' >> /etc/rc.local # 加入开机启动
  4.  
  5. shell > killall java # 因为我的服务器上只跑一个 java 程序,就是 elasticsearch ,所以我这样关闭
  6.  
  7. shell > netstat -lnpt | grep java
  8. tcp ::: :::* LISTEN /java
  9. tcp ::: :::* LISTEN /java
  10.  
  11. shell > tree /data/esearch/ # 数据(索引)目录、日志目录
  12. /data/esearch/
  13. ├── data
  14.    └── my-esearch
  15.    └── nodes
  16.    └──
  17.    ├── node.lock
  18.    └── _state
  19.    └── global-.st
  20. └── logs
  21. ├── my-esearch_deprecation.log
  22. ├── my-esearch_index_indexing_slowlog.log
  23. ├── my-esearch_index_search_slowlog.log
  24. └── my-esearch.log
  25.  
  26. shell >ps aux | grep java
  27. elast 3.7 6.6 ? Sl : : /usr/bin/java -Xms256m -Xmx2g -Djava.awt.headless=true\
  28. -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction= -XX:+UseCMSInitiatingOccupancyOnly\
  29. -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF- -Djna.nosys=true -Des.path.home=/usr/local/elasticsearch-2.4.\
  30. -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

  1. shell > curl -X GET localhost: # 返回 elasticsearch 基本信息,节点名称、版本信息等
  2. {
  3. "name" : "node-1",
  4. "cluster_name" : "es",
  5. "version" : {
  6. "number" : "2.4.0",
  7. "build_hash" : "ce9f0c7394dee074091dd1bc4e9469251181fc55",
  8. "build_timestamp" : "2016-08-29T09:14:17Z",
  9. "build_snapshot" : false,
  10. "lucene_version" : "5.5.2"
  11. },
  12. "tagline" : "You Know, for Search"
  13. }
  14.  
  15. shell > curl -X GET localhost:/_cat # 支持的各指令
  16. =^.^=
  17. /_cat/allocation
  18. /_cat/shards
  19. /_cat/shards/{index}
  20. /_cat/master
  21. /_cat/nodes
  22. /_cat/indices
  23. /_cat/indices/{index}
  24. /_cat/segments
  25. /_cat/segments/{index}
  26. /_cat/count
  27. /_cat/count/{index}
  28. /_cat/recovery
  29. /_cat/recovery/{index}
  30. /_cat/health
  31. /_cat/pending_tasks
  32. /_cat/aliases
  33. /_cat/aliases/{alias}
  34. /_cat/thread_pool
  35. /_cat/plugins
  36. /_cat/fielddata
  37. /_cat/fielddata/{fields}
  38. /_cat/nodeattrs
  39. /_cat/repositories
  40. /_cat/snapshots/{repository}
  41.  
  42. shell > curl -X GET 127.0.0.1:/_cat/master?v # 查看 Master 信息,加 ?v 可以显示表头
  43. id host ip node
  44. 7EkYmW84S8aELlXvieV5uw 192.168.1.32 192.168.1.32 node-
  45.  
  46. shell > curl -X GET localhost:/_cat/nodes?v # 集群节点信息
  47. host ip heap.percent ram.percent load node.role master name
  48. 192.168.1.32 192.168.1.32 0.12 d * node-

五、Elasticsearch 插件安装

  1. shell > /usr/local/elasticsearch/bin/plugin list # 查看 Elasticsearch 安装了哪些插件,结果一个也没有
  2. Installed plugins in /usr/local/elasticsearch/plugins:
  3. - No plugin detected

1、head 集群管理插件

  1. shell > /usr/local/elasticsearch/bin/plugin install mobz/elasticsearch-head # 安装一个插件,用于集群管理
  2.  
  3. # 一些插件地址:
  4. # https://github.com/mobz/elasticsearch-head # 可直接安装
  5. # https://github.com/medcl/elasticsearch-analysis-ik # 需要自己打包 mvn package
  6.  
  7. shell > /usr/local/elasticsearch/bin/plugin list # 再次查看
  8. Installed plugins in /usr/local/elasticsearch/plugins:
  9. - head
  10.  
  11. ## http://192.168.1.32:9200/_plugin/head 浏览器访问 head 集群管理插件

2、中文分词插件

# 这里先留空一个知识点:maven 的安装跟怎么给中文分词器编译打包。

  1. shell > cd /usr/local/src/
  2. shell > wget https://github.com/medcl/elasticsearch-analysis-ik/archive/master.zip # 下载中文分词插件
  3. shell > unzip elasticsearch-analysis-ik-master.zip
  4. shell > cd elasticsearch-analysis-ik-master
  5. shell > mvn package # 将分词器源码编译成 jar 包,过程有点长 ( 打包失败的,可以加我 QQ:25152069 ,我有打好的包 )
  6. shell > cp target/releases/elasticsearch-analysis-ik-1.10..zip /usr/local/elasticsearch-2.4./plugins/ik/ # ik 目录不存在就创建一下
  7. shell > cd /usr/local/elasticsearch-2.4./plugins/ik
  8. shell > unzip elasticsearch-analysis-ik-1.10..zip
  9. shell > killall java
  10. shell > su - elast -c "/usr/local/elasticsearch-2.4.0/bin/elasticsearch"
  11.  
  12. shell > /usr/local/elasticsearch-2.4./bin/plugin list # 再次查看插件已经安装成功
  13. Installed plugins in /usr/local/elasticsearch-2.4./plugins:
  14. - head
  15. - ik

六、配置 Elasticsearch 集群

1、node1 ( 默认的 Master )

  1. shell > grep -vP '^#|^$' /usr/local/elasticsearch-2.4./config/elasticsearch.yml
  2. cluster.name: es # 集群名称必须一致,且同一局域网内可以自动组成集群
  3. node.name: node- # 节点名称唯一
  4. path.data: /data/esearch/data
  5. path.logs: /data/esearch/logs
  6. network.host: 192.168.1.32
  7. http.port:
  8. discovery.zen.ping.unicast.hosts: ["192.168.1.33"] # 指定谁可以成为 Master

2、node2 ( 默认的 node )

  1. shell > grep -vP '^#|^$' /usr/local/elasticsearch-2.4./config/elasticsearch.yml
  2. cluster.name: es
  3. node.name: node- # 节点名称唯一
  4. path.data: /data/esearch/data
  5. path.logs: /data/esearch/logs
  6. network.host: 192.168.1.33
  7. http.port:
  8. discovery.zen.ping.unicast.hosts: ["192.168.1.32"] # 指定谁可以成为 Master

## 注意:

> 如果不指定谁可以成为 Master ,那么默认两个节点都是 Master ,无法构成集群。新加入的节点不设置该参数,无法加入到现有集群。

> 如果被指定的节点设置了 node.master: false ,那么该节点无法成为 Master ,如果只有两个节点,当 Master 挂掉,那么集群失败。

> 防火墙:开启 TCP 9200 :为了使用web浏览集群状态等,TCP 9300 :用于节点直接通信。

3、查看集群状态

  1. shell > curl -X GET 192.168.1.32:/_cat/master?v # 查看谁是 Master
  2. id host ip node
  3. 9RVF5M9lRDuvhzKNF5VjXA 192.168.1.32 192.168.1.32 node-
  4.  
  5. shell > curl -X GET 192.168.1.32:/_cat/nodes?v # 查看各节点状态,* 代表该节点是 Master ,m 代表该节点可以成为 Master ,- 代表该节点不可以成为 Master
  6. host ip heap.percent ram.percent load node.role master name
  7. 192.168.1.33 192.168.1.33 0.36 d m node-
  8. 192.168.1.32 192.168.1.32 0.49 d * node-

# End

Elasticsearch 搜索引擎的更多相关文章

  1. elasticsearch搜索引擎环境的搭建

    elasticsearch 搜索引擎 解决了什么问题:在我们数据量很大时,我们使用模糊查询会使索引列的索引消失,这样使用elasticsearch来提高查询效率. 存在什么问题:有时我们查询的词,el ...

  2. 第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

    第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到 ...

  3. 第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页

    第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页 逻辑处理函数 计算搜索耗时 在开始搜索前:start_time ...

  4. 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

    第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...

  5. 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能

    第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...

  6. 第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中

    第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中 前面我们讲到的elasticsearch( ...

  7. 第三百六十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询

    第三百六十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询 bool查询说明 filter:[],字段的过滤,不参与打分must:[] ...

  8. 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...

  9. 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理

    第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...

  10. 第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作

    第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作 注意:前面讲到的各种操作都是一次http请求操作一条数据,如果想 ...

随机推荐

  1. bzoj 4852 炸弹攻击

    bzoj 4852 炸弹攻击 二维平面上的最优解问题,模拟退火是一个较为优秀的近似算法. 此题确定圆心后,便可 \(O(m)\) 算出收益,且最优解附近显然也较优,是连续变化的,可以直接模拟退火. 小 ...

  2. BZOJ1229 USACO2008 Nov toy 玩具 【三分+贪心】*

    BZOJ1229 USACO2008 Nov toy 玩具 Description 玩具 [Chen Hu, 2006] Bessie的生日快到了, 她希望用D (1 <= D <= 10 ...

  3. DVD项目

    package sy.com.cn;import java.util.*; public class DvdWorker { public static void main(String[]args) ...

  4. dict 没有 key 的情况

    如何处理, 请参考下文,  主要是要理解思路, https://www.polarxiong.com/archives/Python-%E6%93%8D%E4%BD%9Cdict%E6%97%B6%E ...

  5. caddy server 默认https && http2的验证

    1. 下载     https://caddyserver.com/   注意选择应该包含的模块,此次包含了git 插件   2. 配置    使用 Caddyfile    内容如下:     ro ...

  6. oralce之 10046对Hash Join分析

    前两天解决了一个优化SQL的case,SQL语句如下,big_table为150G大小,small_table很小,9000多条记录,不到1M大小,hash_area_size, sort_area_ ...

  7. bzoj 1043 [HAOI2008]下落的圆盘——圆的周长

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1043 算每个圆被它后面的圆盖住了多少圆弧即可.注意判断这个圆完全被后面盖住的情况. #inc ...

  8. CentOS6.8编译安装LAMP

    CentOS6.8编译安装Apache2.4.25.MySQL5.7.16.PHP5.6.29 初始化 #固定IP vi /etc/sysconfig/network-scripts/ifcfg-et ...

  9. golang的指针到string,string到指针的转换

    由于某个需求,需要如题的转换,废话不多说,直接贴代码了,其实挺丑了,备用了 func (this *Server) socketParserHandler(client *genTcpServer.C ...

  10. C语言函数返回值和变量类型

    前言 最近在刷题,在写矩阵的快速幂的题时,对于返回值是数组的程序,写的十分冗杂.借此机会,重新梳理下C语言中函数的返回值与变量类型的关系. 按照变量的寿命,可以分为三种类型 1.静态变量 寿命从程序开 ...