ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 一:简介 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。结合logstash,kibana使用,可以用于大型分布式系统数据分析,展现。 官网:https://www.elastic.co/ ## 二:ElasticSearch的特性: 1.开源的(不解释) 2.它是分布式和高度可用的搜索引擎。 2.1每个索引根据配置分片的数量完成完全分片。 2.2每个碎片都可以有一个或多个副本。 2.3读/搜索操作可以在任何复制分片上执行。 3.支持多租户与多种类型。 3.1支持一个以上的索引。 3.2支持一个以上的每个索引类型。 3.3指数级配置(数量的碎片,索引存储,…)。 4.各种组api 4.1HTTP RESTful API 4.2本地Java API。 4.3所有api执行自动从路由节点操作。 5.面向文档的 6.可靠异步写操作长期持续。 7.(附近)实时搜索。 8.基于Lucene 8.1每个碎片都是一个功能齐全的Lucene索引 8.2所有Lucene通过简单的配置/插件非常容易的暴露出来。 9.每个操作的一致性 ,单文档级别操作都是原子的、一致的、孤立的和持久的。 ## 三:安装elasticsearch单点 ### 3.1 下载 官方下载地址:https://www.elastic.co/downloads/elasticsearch ``` wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.1/elasticsearch-2.4.1.tar.gz; ``` ### 3.2 单点运行 ``` nohup ./bin/elasticsearch & ``` ### 3.3 测试 ``` ~/elk/elasticsearch-2.4.0$ curl -X GET http://localhost:9200/ { "name" : "Hack", "cluster_name" : "elasticsearch", "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" } ``` 当看到类似以上的返回结果,表示elasticsearch单点安装成功! ### 3.4 目录结构 ![](http://7xqnvr.com1.z0.glb.clouddn.com/Elasticsearch%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BAelasticsearch-cluster-setup.png) * bin:可以执行文件 * config:配置文件 * data:es存放数据的文件 * lib:运行所需类库 * logs:日志文件 * modules:加载模块列表(其实是必要插件) * plugins:插件文件(需要自定义安装) > 刚解压的ES并没有这么多目录,只有bin、config、lib、modules,其他都是在第一次运行之后自动生成的。 ## 四:集群的搭建 elasticsearch集群的搭建特别的简单: 1. 在集群的每个节点上,将elasticsearch的单点安装好 2. 修改配置文件elasticsearch.yml的cluster.name(集群名称)配置,要求所有节点配置一致 3. 修改配置文件elasticsearch.yml的http.port为9200,所有节点配置统一 > 只要集群名相同,且机器处于同一局域网同一网段,es会自动去发现其他的节点 ## 五:elasticsearch.yml中文版 ``` # ======================== Elasticsearch Configuration ========================= # # 注意:大部分的Elasticsearch默认配置都是相对合理的.在你着手调整和优化配置,确保你 #了解什么是你想实现的以及后果是什么。 # 修改节点配置的主要方式就是通过本文件,下面的模板列出了最重要的一些设置,你可以通过它配置一个生产环境集群 # 关于更多的配置项及详细信息请参考文档: # <http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html> # # ---------------------------------- 集群配置 ----------------------------------- # 集群的名称描述,集群内统一: cluster.name: aexit-elastic # # ------------------------------------节点配置 ------------------------------------ # # 本节点的名称描述: node.name: node-1 # # 为节点添加自定义的属性: # node.rack: r1 # # ----------------------------------- 路径 ------------------------------------ # # 数据存储路径 (多个路径用逗号分割): # path.data: /path/to/data # # 日志文件路径: # path.logs: /path/to/logs # # ----------------------------------- 内存 ----------------------------------- # # 在启动过程中是否为内存加锁: # bootstrap.memory_lock: true # # 请保证 `ES_HEAP_SIZE` 环境变量的设置大约为系统可用内存的一半 # and that the owner of the process is allowed to use this limit. # # 当发生swapping the memory, Elasticsearch 的执行效率很差. # # ---------------------------------- 网络 ----------------------------------- # # 设置绑定的本机ip地址 (IPv4 or IPv6): network.host: 192.168.1.158 # # 自定义HTTP端口: http.port: 9200 # # 关于更多的信息请参考: # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html> # # --------------------------------- 服务发现 ---------------------------------- # # 当新节点加入的时候,配置一个初始化主机列表用于节点发现 # 默认的主机列表是 ["127.0.0.1", "[::1]"] discovery.zen.ping.unicast.hosts: ["192.168.1.158", "192.168.1.60", "192.168.1.24"] # # Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1): # 为了避免脑裂的发生,使用如下配置(数值为节点总数/2 + 1): discovery.zen.minimum_master_nodes: 2 # # 关于更多的信息请参考: # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html> # # ---------------------------------- 网关 ----------------------------------- # # 如果集群发生重启,直到N个节点启动完成,才能开始进行集群初始化恢复动作 gateway.recover_after_nodes: 3 # # 关于更多的信息请参考: # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html> # # ---------------------------------- 其他 ----------------------------------- # # 禁止在一个操作系统启动多个节点: node.max_local_storage_nodes: 1 # # 删除索引时,需要明确的名称 # action.destructive_requires_name: true ``` ## 参考: http://blog.csdn.net/jiuqiyuliang/article/details/51245335 * 本文没有涉及到的elasticsearch head插件的安装(单点即可) http://blog.csdn.net/jiuqiyuliang/article/details/51240800