一、简介

ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。

Lucene只是一个框架,要利用它的功能,需要使用JAVA,并且在程序中集成Lucene。更糟的是,Lucene非常复杂,需要做很多的学习了解,才能明白它是如何运行的。

Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,请不需要了解其背后复杂的Lucene的运行原理。所以ElasticSearch可以看作是Lucene的封装。

二、安装

1、安装JDK

ElasticSearch,简称ES,是使用Lucene作为内部引擎,而Lucene是纯Java语言编写的,因此也是运行在JVM上的。

假设JDK安装包位于/home/test/java目录下,Linux中安装JDK:

  • 安装JDK

以root身份在/usr/下建立java目录:sudo mkdir /usr/java

rpm –ivh /home/test/java/jdk-7u67-linux-i586.rpm (使用该命令进行安装,会安装到/usr/java/目录下)

  • 配置JDK环境变量(需要管理员权限):

sudo vi /etc/profile

#JAVA_HOME

export JAVA_HOME=/usr/java/jdk1.7.0_67

export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH: $JAVA_HOME/bin

  • 验证安装

java -version

输出Java版本的相关信息,及表示安装成功。

2、下载ElasticSearch

ES下载地址:http://www.elasticsearch.org/download 目前最新版本是:1.4.1

3、安装ElasticSearch

将安装包放于/homg/test/目录下,解压elasticsearch-1.4.1.tar:tar –zxvf /home/test/elasticsearch-1.4.1.tar

4、运行ElasticSearch

解压安装后,在/home/test/elasticsearch-1.4.1/目录下会有三个文件夹:bin、config、lib

运行bin文件夹下的elasticsearch即可将ES系统跑起来:./elasticsearch

5、注意点

最新版的ES需要JDK 1.7及以上

若使用Java API进行操作ES,两者的JDK版本还需一致

三、配置

1、配置文件说明

配置文件位于config目录下,主要有:elasticsearch.yml(ES框架的核心配置)、logging.yml(日志记录相关配置,使用的是log4j进行日志记录)

2、配置项详解

主要解释elasticsearch.yml下各配置项的含义。

################################### 集群###################################
# 集群名称,默认为elasticsearch,在同一网段,具有相同集群名字的节点会自动成为一个集群
#cluster.name: elasticsearch
####################################节点#####################################
# 节点名称,es启动时会自动创建节点名称
#node.name: "Franz Kafka"

# 是否作为主节点,每个节点都可以被配置成为主节点,默认值为true,只有设置为true时,才有可能成为master,最先启动,且该参数设为true的节点会被推选了master
#node.master: true

# 每个节点都可以定义一些与之关联的通用属性,用于后期集群进行碎片分配时的过滤
#node.rack: rack314

# 默认情况下,多个节点可以在同一个安装路径启动,如果你想让你的es只启动一个节点,可以进行如下设置
#node.max_local_storage_nodes: 1

#################################### 索引####################################
# 设置一个索引的分片数量,默认值为5
#index.number_of_shards: 5

# 设置一个索引可被复制的数量,默认值为1
#index.number_of_replicas: 1

# 当你想要禁用公布式时,你可以进行如下设置
#index.number_of_shards: 1
#index.number_of_replicas: 0

# 这两个属性的设置直接影响集群中索引和搜索操作的执行。假设你有足够的机器来持有碎片和复制品,那么可以按如下规则设置这两个值:
# 1) 拥有更多的碎片可以提升索引执行能力,并允许通过机器分发一个大型的索引;
# 2) 拥有更多的复制器能够提升搜索执行能力以及集群能力。
# 对于一个索引来说,number_of_shards只能设置一次,而number_of_replicas可以使用索引更新设置API在任何时候被增加或者减少
#################################### Paths ####################################
#  配置文件所在的位置,即elasticsearch.yml和logging.yml所在的位置
#path.conf: /path/to/conf

# 分配给当前节点的索引数据所在的位置,可以设置多个路径,路径之间用逗号分隔
#path.data: /path/to/data

# 临时文件位置
#path.work: /path/to/work

# 日志文件所在位置
#path.logs: /path/to/logs

# 插件安装位置
#path.plugins: /path/to/plugins

#################################### 插件###################################
# 插件托管位置,若列表中的某一个插件未安装,则节点无法启动
#plugin.mandatory: mapper-attachments,lang-groovy

################################### 内存####################################
#  JVM开始交换时,ElasticSearch表现并不好:你需要保障JVM不进行交换,
# 可以将bootstrap.mlockall设置为true禁止交换
#bootstrap.mlockall: true

##############################网络和HTTP###############################
# 默认情况下,ElasticSearch使用0.0.0.0地址,并为http传输开启9200-9300端口,
# 为节点到节点的通信开启9300-9400端口,也可以自行设置IP地址
#network.bind_host: 192.168.0.1

# 设置其他节点连接此节点的地址,如果不设置的话,则自动获取
#network.publish_host: 192.168.0.1

# 定制该节点与其他节点交互的端口
#transport.tcp.port: 9300

# 节点间交互时,可以设置是否压缩,默认为不压缩
#transport.tcp.compress: true

# Http传输监听定制端口
#http.port: 9200

# 设置内容的最大长度
#http.max_content_length: 100mb

# 禁止HTTP
#http.enabled: false

################################### 网关###################################
# 网关允许在所有集群重启后持有集群状态,集群状态的变更都会被保存下来,
# 当第一次启用集群时,可以从网关中读取到状态,默认网关类型(也是推荐的)是local
#gateway.type: local

# 允许在N个节点启动后恢复过程
#gateway.recover_after_nodes: 1

# 设置初始化恢复过程的超时时间
#gateway.recover_after_time: 5m

# 设置该集群中可存在的节点上限
#gateway.expected_nodes: 2

############################# 恢复设置#############################
# 设置一个节点的并发数量,有两种情况,一种是在初始复苏过程中
#cluster.routing.allocation.node_initial_primaries_recoveries: 4

# 另一种是在添加、删除节点及调整时
#cluster.routing.allocation.node_concurrent_recoveries: 2

# 设置复苏时的吞吐量,默认情况下是 20mb
#indices.recovery.max_bytes_per_sec: 20mb

# 设置从对等节点恢复片段时打开的流的数量上限
#indices.recovery.concurrent_streams: 5
################################## Discovery ##################################
# 设置一个集群中主节点的数量,当多于三个节点时,该值可在2-4之间
#discovery.zen.minimum_master_nodes: 1

# 设置ping其他节点时的超时时间,网络比较慢时可将该值设大
#discovery.zen.ping.timeout: 3s

# 禁止当前节点发现多个集群节点,默认值为false
#discovery.zen.ping.multicast.enabled: false

# 设置新节点被启动时能够发现的主节点列表
#discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]

##################################日志显示##################################

# Shard level query and fetch threshold logging.

#index.search.slowlog.threshold.query.warn: 10s
#index.search.slowlog.threshold.query.info: 5s
#index.search.slowlog.threshold.query.debug: 2s
#index.search.slowlog.threshold.query.trace: 500ms

#index.search.slowlog.threshold.fetch.warn: 1s
#index.search.slowlog.threshold.fetch.info: 800ms
#index.search.slowlog.threshold.fetch.debug: 500ms
#index.search.slowlog.threshold.fetch.trace: 200ms

#index.indexing.slowlog.threshold.index.warn: 10s
#index.indexing.slowlog.threshold.index.info: 5s
#index.indexing.slowlog.threshold.index.debug: 2s
#index.indexing.slowlog.threshold.index.trace: 500ms

##################################垃圾回收日志记录################################

#monitor.jvm.gc.young.warn: 1000ms
#monitor.jvm.gc.young.info: 700ms
#monitor.jvm.gc.young.debug: 400ms

#monitor.jvm.gc.old.warn: 10s
#monitor.jvm.gc.old.info: 5s
#monitor.jvm.gc.old.debug: 2s

################################## 安全################################

# Uncomment if you want to enable JSONP as a valid return transport on the
# http server. With this enabled, it may pose a security risk, so disabling
# it unless you need it is recommended (it is disabled by default).
#http.jsonp.enable: true

四、核心概念

  • 集群

一个集群就是由一个或多个节点组织在一起, 它们共同持有整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch” 。一个节点只能通过指定某个集群的名字,来加入这个集群。

  • 节点

一个节点是集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是随机的。这个名字会在启动的时候赋予节点。 这个名字对于管理工作来说挺重要的,因为在这个管理过程中,你会去确定网络中的哪些服务器对应于Elasticsearch 集群中的哪些节点。

在一个集群里,可以拥有任意多个节点。而且,如果当前网络中没有运 行 任 何 Elasticsearch 节 点 , 这 时 启 动 一 个 节 点 , 会 默 认 创 建并 加 入 一 个 叫 做“elasticsearch”的集群.

  • 索引

一个索引就是一个拥有几分相似特征的文档的集合。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。类似于数据库db。

  • 类型

在一个索引中,可以定义一种或多种类型。 一个类型是索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。类似于数据表table

  • 文档

一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以 JSON(Javascript Object Notation)格式来表示,在一个 index/type 里面,可以存储任意多的文档。注意,尽管一个文档,物理上存在于一个索引之中,文档必须被索引/赋予一个索引的 type。类似于一行记录。

  • 切片和复制

一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有 10 亿文档的索引占据 1TB 的磁盘空间,而任一节点都没有这样大的磁盘空间;或者单个节点处理搜索请求,响应太慢。为了解决这个问题,Elasticsearch 提供了将索引划分成多份的能力,这些份就叫做分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的“索引” ,这个“索引”可以被放置到集群中的任何节点上。

  • 总结--与关系型数据库的对比
关系数据库     ⇒ 数据库 ⇒ 表    ⇒ 行    ⇒ 列(Columns)
Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields)

五、相关资料链接

http://www.elasticsearch.org/guide/en/elasticsearch/

http://www.elasticsearch.cn/

http://learnes.net/getting_started/installing_es.html

ElasticSearch学习笔记-01 简介、安装、配置与核心概念的更多相关文章

  1. PHP学习笔记----IIS7下安装配置php环境

    原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...

  2. [学习笔记]Ubuntu下安装配置SQLSERVER2017

    摘要自微软官网: https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu 安装步骤: 1. 导入公共秘 ...

  3. Java学习笔记——Linux下安装配置tomcat

    朝辞白帝彩云间,千里江陵一日还. 两岸猿声啼不住,轻舟已过万重山. ——早发白帝城 首先需要安装配置JDK,这里简单回顾下.Linux下用root身份在/opt/文件夹下创建jvm文件夹,然后使用ta ...

  4. appium学习笔记(环境安装配置,设备启动)

      Android SDK下载及配置 下载地址 下载后解压缩,打开SDK Manager.exe,下载适当版本的Android包 配置环境变量:目录下的tools路径(含uiautomatorview ...

  5. MongoDB学习笔记-01 简介、安装

    MongoDB简介 MongoDB是一种强大.灵活.可拓展的存储方式.是一个面向文档(相当于"行"的概念)的数据库. 可拓展:通过添加服务器而增加存储量. Windows下安装 版 ...

  6. Machine Learning 学习笔记 01 Typora、配置OSS、导论

    Typora 安装与使用. Typora插件. OSS图床配置. 机器学习导论. 机器学习的基本思路. 机器学习实操的7个步骤

  7. ELK学习笔记之Kibana安装配置

    Kibana 是一个开源的分析和可视化平台,是ELK的重要部分.Kibana提供搜索.查看和与存储在 Elasticsearch 索引中的数据进行交互的功能.开发者或运维人员可以轻松地执行高级数据分析 ...

  8. php学习笔记之wamp安装配置

    一.下载apache.php.mariadb apache 下载地址:http://www.apachehaus.com/cgi-bin/download.plx VC9版本分为:32位版.64位版. ...

  9. Java学习笔记——Linux下安装配置MySQL

    山重水复疑无路,柳暗花明又一村 --游山西村 系统:Ubuntu 16.04LTS 1\官网下载mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz2\建立工作组:$su ...

随机推荐

  1. 关于javascript tween的学后小感想

    今天决定了解一下tween算法,首先得下载个tween.js看看吧,好吧,有点被惊艳到了. 也让我想起了之前上数学课时,听到过的一句话:“数学世界是神秘.纯洁.有魅力的”,一直 记得这句话,期待有朝一 ...

  2. Flex数据交互之WebService

    In this article you will learn how to call webservices hosted on asp.net applications from flex. Fir ...

  3. lua中的协程

    lua中的协程和线程类似: 1. 协程拥有自己的独立的栈,局部变量,和指令: 2. 所有协程都可以共享全局变量: 3. 协程不能像线程那样并行执行,协程之间需要相互协调执行,同一个时刻只能运行一个协程 ...

  4. VMware Workstation(虚拟机)v10.0.1 简体中文破解版

    http://www.xp510.com/xiazai/ossoft/desktools/22610.html

  5. win10 Administrator没有管理员权限解决方案

    方法/步骤 在运行框 里面输入“gpedit.msc”. 打开组策略编辑器,计算机配置->windows设置->安全设置->->本地策略->安全选项 找到“用户账户控制: ...

  6. 纸上谈兵:栈(stack)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 栈(stack)是简单的数据结构,但在计算机中使用广泛.它是有序的元素集合.栈最显 ...

  7. EXCL poi导入

    public static void importExcel2(File file) throws Exception { InputStream is = new FileInputStream(f ...

  8. 服务器响应头隐藏X-power-by

    服务器响应头隐藏X-power-by 这个不是Apache或者Nginx输出的,而是由语言解析器或者应用程序框架输出的. 这个值的意义用于告知网站是用何种语言或框架编写的.例如: PHP标准输出是:X ...

  9. Hadoop HDFS编程 API入门系列之合并小文件到HDFS(三)

    不多说,直接上代码.  代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs7; import java.io.IOException;import ja ...

  10. div一直浮动在页面的底部

    永远在底部是那种无论滚动条怎么拉,都可以看见悬浮在底部的那种,如果是那种,是用固定定位做的.另外注意页面中最后的元素或者body要空出固定条的高度,不然最后的元素会被遮挡. html: <div ...