elasticsearch教程 怎么用源码启动 调试

51IT技术博客
Elasticsearch 开源分布式搜索引擎入门指南,Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM)] 基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架。
一、初识 Elasticsearch
Elasticsearch 是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。
它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。
维基百科使用 Elasticsearch 来进行全文搜索并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。
英国卫报使用 Elasticsearch 来处理访客日志,以便能将公众对不同文章的反应实时地反馈给各位编辑。
StackOverflow 将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。
GitHub 使用 Elasticsearch 来检索超过1300亿行代码。
每天,Goldman Sachs 使用它来处理5TB数据的索引,还有很多投行使用它来分析股票市场的变动。
但是Elasticsearch并不只是面向大型企业的,它还帮助了很多类似 DataDog 以及 Klout 的创业公司进行了功能的扩展。Elasticsearch 可以运行在你的笔记本上,也可以部署到成千上万的服务器上,处理PB级别的数据。
Elasticsearch 每一个独立的部分都不是新创的。比如全文搜索早就已经被实现,统计系统和分布式数据库也早已存在。但是革命之处在于能将这些独立的功能结合成一个连贯、实时处理的整体。对于新用户,它的门槛也很低,当然他也会因为你的强大而变得更强大。
你之所以拿起这本书,就是因为你眼前有很多的数据,但是你并不知道如何使用他们,接下来我们将开始探讨有关处理数据的事情。
很不幸的是,目前的大部分数据库在提取数据方面都是非常的薄弱的。虽然它们可以通过精准的时间戳或者确切的数值来进行内容的筛选,但是它们可以在全文搜索时做到同义词或者相关性搜索吗?他们可以汇总相同内容数据吗?最重要的是,每对如此巨大的数据量,它们能做到实时处理吗?
这便是 Elasticsearch 如此突出的理由:Elasticsearch 可以帮助你浏览并利用已经快要烂在数据库里的那些极难查询的数据。
Elasticsearch 将会成为你一生的小伙伴。
二、了解搜索的概念
Elasticsearch 是一个建立在全文搜索引擎
基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架。
但是 Lucene 只是一个框架,要充分利用它的功能,你需要使用 JAVA,并且在你的程序中集成 Lucene。更糟的是,你需要做很多的学习了解,才能明白它是如何运行的,Lucene 确实非常复杂。
Elasticsearch 使用 Lucene 作为内部引擎,但是在你使用它做全文搜索时,只需要使用统一开发好的API即可,而并不需要了解其背后复杂的 Lucene 的运行原理。
当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:
分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
实时分析的分布式搜索引擎。
可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与 ES 的 RESTful API 进行交流。
Elasticsearch 的上手是非常简单的。它附带了很多非常合理的默认值,这让初学者很好地避免一上手就要面对复杂的理论,它安装好了就可以使用了,用很小的学习成本就可以变得很有生产力。
随着学习的深入,你还可以使用 Elasticsearch 更多高级的功能,整个引擎可以很灵活地进行配置。你可以根据自身需求来定制属于你自己的 Elasticsearch。
三、安装 Elasticsearch 相关软件
1. 安装Java
yum install java-1.7.0-openjdk -y
2. 安装 Elasticsearch
了解 Elasticsearch 最简单的方法就是去尽情的玩儿它(汗),准备好了我们就开始吧。
安装 Elasticsearch 只有一个要求,就是要安装最新版本的JAVA。你可以到官方网站下载它:.
你可以在这里下载到最新版本的 Elasticsearch: .
curl -L -O http://download.elasticsearch.org/PATH/TO/LATEST/$VERSION.zip
unzip elasticsearch-$VERSION.zip
elasticsearch-$VERSION
提示: 当你安装 Elasticsearch 时,你可以到
选择Debian或者RP安装包。或者你也可以使用官方提供的
3. 安装 Marvel
是Elasticsearch的管理和监控工具,对于开发使用免费的。它配备了一个叫做Sense的交互式控制台,方便通过浏览器直接与Elasticsearch交互,这是个付费的监控插件。
很多代码样例包含叫做View in Sense 的链接,点击会后会在Sense控制台上打开代码样例。
安装Marvel不是必须,但是它可以通过在你本地Elasticsearch集群中运行样例代码而增加与此书的互动性。
Marvel是一个插件,在Elasticsearch目录中运行以下代码来下载和安装:
./bin/plugin -i elasticsearch/marvel/latest
你可能想要禁用监控,你可以通过以下代码关闭Marvel:
echo 'marvel.agent.enabled: false' && ./config/elasticsearch.yml
4. 运行Elasticsearch
Elasticsearch已经准备就绪,执行以下命令在前台启动:
./bin/elasticsearch
如果想在后台以守护进程模式运行,添加-d参数,打开另一个终端运行测试:
curl 'http://localhost:9200/?pretty'
你能看到以下信息:
"status": 200,
"name": "Shrunken Bones",
"version": {
"number": "1.4.0",
"lucene_version": "4.10"
"tagline": "You Know, for Search"
这说明你的ELasticsearch集群已经启动并运行,接下来你可以开始尝试各种功能了。
5. Elasticsearch集群和节点
节点(node)是你运行的Elasticsearch实例。一个集群(cluster)是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。
你需要修改cluster.name默认值为适合你的值,用于停止节点加入到同网络相同名字的集群中。
你可以修改config/目录下的elasticsearch.yml文件,然后重启ELasticsearch。当Elasticsearch前台运行,使用Ctrl-C快捷键终止,否则你可以调用shutdown API关闭:
curl -XPOST 'http://localhost:9200/_shutdown'
6. 查看Marvel和Sense
如果你安装了Marvel管理和监控工具,可以通过在浏览器里通过以下地址访问:
你可以在Marvel中的Marvel dashboards点击下拉菜单或者访问以下地址访问Sense开发者控制台:
四、与Elasticsearch 交互 API
如何与ELasticsearch交互取决于你是否使用Java。
1. Java API
如果你使用Java,ELasticsearch提供两种内置客户端用于你的代码:
1) 节点客户端(node client):
节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己没有数据,但是知道什么数据位于集群的哪个节点上,能够直接转发请求到对应的节点上。
2) 传输客户端(Transport client):
更轻量的传输客户端能够发送请求到远程集群,它自己不加入集群,只是简单转发请求给集群中的节点。
两个Java客户端都通过9300端口与集群交互,使用Elasticsearch传输协议(Elasticsearch Transport Protocol)。集群中的节点也通过9300端口通信。如果此端口未开放,你的节点将不能形成集群。
提示:Java客户端版本必须与集群中的节点一致,换言之,它们可能互相无法识别。
关于Java API的更多信息请查看相关章节:
2. 通过HTTP使用附带JSON数据的RESTful API
其他所有程序语言都可以通过9200端口的RESTful API与Elasticsearch通信,事实上,如你所见,你甚至可以通过命令行的curl命令与ELasticsearch通信。
Elasticsearch官方提供了多种程序语言的客户端——Groovy,Javascript, .NET,PHP,Perl,Python,and Ruby——还有数量庞大的社区提供的客户端和集成插件,所有这些可以在这里找到:。
向Elasticsearch发出的请求与其它HTTP请求组成是一致的,例如统计集群中文件的数量,我们可以这样:
curl -XGET 'http://localhost:9200/_count?pretty' -d '
"query": {
"match_all": {}
合适的HTTP方法或动词:GET, POST, PUT, HEAD or DELETE。
任意一个节点的协议、主机名和端口。
请求路径。
一些可选的查询参数,例如?pretty返回更加美观易读的JSON。
一个JSON编码过的请求主体(如果需要)。
Elasticsearch返回一个类似200 OK的HTTP状态码和JSON格式主体(除HEAD请求)。上面的请求会得到如下的响应主体:
"count" : 0,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
我们看不到HTTP头是因为没有让curl显示它们,如果想显示,使用curl命令后跟-i参数:
curl -i -XGET 'localhost:9200/'
对于本书的其余部分,我们将简写curl中每次重复的部分,例如主机名和端口,还有curl命令本身。原代码:
curl -XGET 'localhost:9200/_count?pretty' -d '
"query": {
"match_all": {}
我们将简写成这样:
GET /_count
"query": {
"match_all": {}
事实上,这与在Sense终端中使用的格式相同,你可以点击顶部的View in Sense来运行这段代码。
五、Elasticsearch是面向文档的
程序中的对象很少是简单的键值列表。更多时候它拥有复杂数据结构,比如包含日期、地理位置、对象或者数组。
迟早你想会把这些对象存储到数据库中。尝试将这些数据保存到由行和列组成的关系数据库中,就好像要把一个复杂对象放入一个非常大的表格中:你不得不调整对象以适应表模式(通常一列表示一个字段)然后不得不在检索的时候重建对象。
Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document),它不仅是存储,还会索引(index)每个文档的内容使之可以被搜索。
在Elasticsearch中你可以对文档索引、搜索、排序、过滤,而非成行成列的数据。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。
1. JSON数据类型
ELasticsearch使用JSON(或者叫做Javascript对象符号(JavaScript Object Notation))做为文档序列化格式。JSON现在已经被大多语言所支持,而且已经成为NoSQL领域的标准格式。它简单、简洁且容易被阅读。 以下这个JSON文档表示一个用户对象:
"first_name": "John",
"last_name":
"Eco-warrior and defender of the weak",
"interests": [ "dolphins", "whales" ]
"join_date": ""
尽管原始的user对象很复杂,但它的结构和对象的含义已经被保留在JSON中了,转换对象为JSON并作为索引要比在表结构中做相同事情简单多了。
转换你的数据为JSON
几乎所有语言都有相应的模块用于将任意数据结构转换为JSON,但每种语言处理细节不同。具体请查看“serialization” or “marshalling”两个用于处理JSON的模块。会自动为你序列化和反序列化JSON。
转载自51it技术博客:
相关IT文章&&&&elasticsearch源码
elasticsearch源码,内部架构很nb
若举报审核通过,可奖励20下载分
被举报人:
blackproof
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行elasticsearch的java使用实例
Lucene搜索引擎
开发语言:Java
实例大小:9.02KB
下载次数:
浏览次数:
发布时间:
实例类别:Lucene搜索引擎
发 布 人:
所需积分:2
&相关标签:
同类人气实例源码
实例下载地址
elasticsearch的java使用实例
不能下载?内容有错? 点击这里报错
好例子网口号:伸出你的我的手 & 分享!
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
Copyright &
好例子网(www.haolizi.net).All Rights Reserved备案编号:冀ICP备号 石公备号(10)Elasticsearch集群配置和管理教程-服务器安全-操作系统-壹聚教程网Elasticsearch集群配置和管理教程
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。
ElasticSearch集群服务器配置一、安装ElasticSearch是基于Lence的,而Lence是用Java编写的开源库,需要依赖Java的运行环境。现在使用的ELasticSearch版本是1.6,它需要jdk1.7或以上的版本。本文使用的是linux系统,安装配置好Java环境,把download下来,解压后直接执行启动就可以了。1.安装启动elasticsearch:cd到elasticsearch-1.6.0.tar.gz 放置的目录,解压 tar -xvf elasticsearch-1.6.0.tar.gz 启动 ./elasticsearch-1.6.0/bin/elasticsearch,查看启动信息,会提到http的默认端口是9200,transport的默认端口是9300,这个非常重要。接下来可以在Terminal输入一下命令,查看一些基本信息查看集群curl 'localhost:9200/_cat/health?v'查看节点curl 'localhost:9200/_cat/nodes?v'查看索引curl 'localhost:9200/_cat/indices?v'以上这些信息均可在安装head插件后,在http://localhost:9200/_plugin/head/中查看2. 安装head插件cd到elasticsearch-1.6.0/bin目录,运行./plugin -install mobz/elasticsearch-head,安装并启动elasticsearch后,在浏览器打开http://localhost:9200/_plugin/head/,即可看到es的集群、节点、索引、数据等等的信息。二、启动1.自带脚本启动1)bin/elasticsearch,不太任何参数,默认在前端启动2)bin/elasticsearch-d,带参-d,表示在后台作为服务线程启动还可以设置更多的参数:bin/elasticsearch-Xmx2g-Xms2g-Des.index.store.type=memory--node.name=my-node注意:如果是在局域网中运行elasticsearch集群也是很简单的,只要cluster.name设置一致,并且机器在同一网段下,启动的es会自动发现对方,组成集群。2.elasticsearch-servicewrapper1)安装到github,htt:///elastic/elasticsearch-servicewrapper下载,把service拷贝到ES_HOME/bin目录下。2)使用ES_HOME/bin/service/elasticsearch + console/start/stop...ParameterDescriptionconsoleRunthe elasticsearch in the foreground.startRunelasticsearch in the background.stopStopselasticsearch if its running.installInstallelasticsearch to run on system startup (init.d / service).removeRemoveselasticsearch from system startup (init.d / service).在service目录下有个elasticsearch.conf配置文件,主要是设置一些java运行环境参数,其中比较重要的是下面的参数:#es的home路径,不用用默认值就可以set.default.ES_HOME=&Pathto ElasticSearch Home&#分配给es的内存大小set.default.ES_HEAP_SIZE=1024#启动等待超时时间(以秒为单位)wrapper.startup.timeout=300#关闭等待超时时间(以秒为单位)wrapper.shutdown.timeout=300#ping超时时间(以秒为单位)wrapper.ping.timeout=300三、配置浅涉elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。cluster.name:elasticsearch配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。node.name:&FranzKafka&节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。node.master:true指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。node.data:true指定该节点是否存储索引数据,默认为true。index.number_of_shards:5设置默认索引分片个数,默认为5片。index.number_of_replicas:1设置默认索引副本个数,默认为1个副本。path.conf:/path/to/conf设置配置文件的存储路径,默认是es根目录下的config文件夹。path.data:/path/to/data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:path.data:/path/to/data1,/path/to/data2path.work:/path/to/work设置临时文件的存储路径,默认是es根目录下的work文件夹。path.logs:/path/to/logs设置日志文件的存储路径,默认是es根目录下的logs文件夹path.plugins:/path/to/plugins设置插件的存放路径,默认是es根目录下的plugins文件夹bootstrap.mlockall:true设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit-l unlimited`命令。network.bind_host:192.168.0.1设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。network.publish_host:192.168.0.1设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。network.host:192.168.0.1这个参数是用来同时设置bind_host和publish_host上面两个参数。transport.tcp.port:9300设置节点间交互的tcp端口,默认是9300。press:true设置是否压缩tcp传输时的数据,默认为false,不压缩。http.port:9200设置对外服务的http端口,默认为9200。http.max_content_length:100mb设置内容的最大容量,默认100mbhttp.enabled:false是否使用http协议对外提供服务,默认为true,开启。gateway.type:localgateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。gateway.recover_after_nodes:1设置集群中N个节点启动时进行数据恢复,默认为1。gateway.recover_after_time:5m设置初始化数据恢复进程的超时时间,默认是5分钟。gateway.expected_nodes:2设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。cluster.routing.allocation.node_initial_primaries_recoveries:4初始化数据恢复时,并发恢复线程的个数,默认为4。cluster.routing.allocation.node_concurrent_recoveries:2添加删除节点或负载均衡时并发恢复线程的个数,默认为4。indices.recovery.max_size_per_sec:0设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。indices.recovery.concurrent_streams:5设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。discovery.zen.minimum_master_nodes:1设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)discovery.zen.ping.timeout:3s设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。discovery.zen.ping.multicast.enabled:false设置是否打开多播发现节点,默认是true。discovery.zen.ping.unicast.hosts:[&host1&, &host2:port&,&host3[portX-portY]&]设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点四、集群配置多个节点1.概述本例子的集群将部署4个节点:10.0.0.11 es110.0.0.209 es210.0.0.206 es310.0.0.208 es42.集群配置上文提到过,只要集群名相同,且机器处于同一局域网同一网段,es会自动去发现其他的节点。2.1es2的配置vimES_HOME/config/elasticsearch.yml在文件尾部添加一下内容:cluster.name:elasticsearch #集群的名称,同一个集群该值必须设置成相同的node.name:&es2& #该节点的名字node.master:true #该节点有机会成为master节点node.data:true #该节点可以存储数据node.rack:rack2 #该节点所属的机架index.number_of_shards:5 #shard的数目index.number_of_replicas:3 #数据副本的数目network.bind_host:0.0.0.0 #设置绑定的IP地址,可以是IPV4或者IPV6network.publish_host:10.0.0.209 #设置其他节点与该节点交互的IP地址network.host:10.0.0.209 #该参数用于同时设置bind_host和publish_hosttransport.tcp.port:9300 #设置节点之间交互的端口号press:true #设置是否压缩tcp上交互传输的数据http.port:9200 #设置对外服务的http端口号http.max_content_length:100mb #设置http内容的最大大小http.enabled:true #是否开启http服务对外提供服务discovery.zen.minimum_master_nodes:2 #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)discovery.zen.ping.timeout:120s #设置集群中自动发现其他节点时ping连接的超时时间discovery.zen.ping.multicast.enabled:true #设置是否打开多播发现节点discovery.zen.ping.unicast.hosts:[&10.0.0.209:9300&,&10.0.0.206:9300&,&10.0.0.208:9300&] #设置集群中的Master节点的初始列表,可以通过这些节点来自动发现其他新加入集群的节点2.2es3的配置相似地,在206的机子上vimES_HOME/config/elasticsearch.yml在文件尾部添加一下内容:cluster.name:elasticsearch #集群的名称,同一个集群该值必须设置成相同的node.name:&es3& #该节点的名字node.master:true #该节点有机会成为master节点node.data:true #该节点可以存储数据node.rack:rack3 #该节点所属的机架index.number_of_shards:5 #shard的数目index.number_of_replicas:3 #数据副本的数目network.bind_host:0.0.0.0 #设置绑定的IP地址,可以是IPV4或者IPV6network.publish_host:10.0.0.206 #设置其他节点与该节点交互的IP地址network.host:10.0.0.206 #该参数用于同时设置bind_host和publish_hosttransport.tcp.port:9300 #设置节点之间交互的端口号press:true #设置是否压缩tcp上交互传输的数据http.port:9200 #设置对外服务的http端口号http.max_content_length:100mb #设置http内容的最大大小http.enabled:true #是否开启http服务对外提供服务discovery.zen.minimum_master_nodes:2 #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)discovery.zen.ping.timeout:120s #设置集群中自动发现其他节点时ping连接的超时时间discovery.zen.ping.multicast.enabled:true #设置是否打开多播发现节点discovery.zen.ping.unicast.hosts:[&10.0.0.209:9300&,&10.0.0.206:9300&,&10.0.0.208:9300&] #设置集群中的Master节点的初始列表,可以通过这些节点来自动发现其他新加入集群的节点2.3 208的机子上的es配置就参考上面两个节点的2.4验证结果启动节点:ES_HOME/bin/service/elasticsearchstart成功启动各个节点后,浏览器打开http://10.0.0.209:9200/_plugin/head/,界面会列出各个节点的信息。3.节点添加和删除3.1添加节点非常简单,几乎与上面设置节点的步骤一致。在10.0.0.11机子上,vimES_HOME/config/elasticsearch.ymlcluster.name:elasticsearch #集群的名称,同一个集群该值必须设置成相同的node.name:&es5& #该节点的名字node.master:false #该节点有机会成为master节点node.data:true #该节点可以存储数据node.rack:rack5 #该节点所属的机架index.number_of_shards:5 #shard的数目index.number_of_replicas:3 #数据副本的数目network.bind_host:0.0.0.0 #设置绑定的IP地址,可以是IPV4或者IPV6network.publish_host:10.0.0.11 #设置其他节点与该节点交互的IP地址network.host:10.0.0.11 #该参数用于同时设置bind_host和publish_hosttransport.tcp.port:9300 #设置节点之间交互的端口号press:true #设置是否压缩tcp上交互传输的数据http.port:9200 #设置对外服务的http端口号http.max_content_length:100mb #设置http内容的最大大小http.enabled:true #是否开启http服务对外提供服务discovery.zen.minimum_master_nodes:2 #设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)discovery.zen.ping.timeout:120s #设置集群中自动发现其他节点时ping连接的超时时间discovery.zen.ping.multicast.enabled:true #设置是否打开多播发现节点discovery.zen.ping.unicast.hosts:[&10.0.0.209:9300&,&10.0.0.206:9300&,&10.0.0.208:9300&] #设置集群中的Master节点的初始列表,可以通过这些节点来自动发现其他新加入集群的节点写好配置,启动此es节点。查看集群的状态:&&& http://10.0.0.11:9200/_nodeselasticsearch采用广播的方式自动发现节点,需要等待一段时间才能发现新的节点:耐心等待...最后可以在此界面看到各个节点的信息。3.2节点删除在想要删除节点的机子上,运行ES_HOME/bin/service/elasticsearchstop,等待一会后,查看集群状态,会发现该节点没有了。Elasticsearch集群管理ES通过设置【节点的名字】和【集群的名字】,就能自动的组织相同集群名字的节点加入到集群中,并使很多的技术对用户透明化。如果用户想要管理查看集群的状态,可以通过一些REST API来实现。其他的ES文档翻译参考:Elasticsearch文档总结REST API用途ES提供了很多全面的API,大致可以分成如下几种:1 检查集群、节点、索引的健康情况2 管理集群、节点,索引数据、元数据3 执行CRUD,创建、读取、更新、删除 以及 查询4 执行高级的查询操作,比如排序、脚本、聚合等查看集群状态可以通过CURL命令发送REST命令,查询集群的健康状态:curl 'localhost:9200/_cat/health?v'Localhost是主机的地址,9200是监听的端口号,ES默认监听的端口号就是9200.这里需要注意的是,windows下安装的CURL有可能不支持单引号,如果有报错,还请改成双引号,内部使用转义字符转义。得到的相应结果:epoch&&&&& timestamp cluster&&&&&& status node.total node.data shards pri relo init unassign 14:28:09& elasticsearch green&&&&&&&&&& 1&&&&&&&& 1&&&&& 0&& 0&&& 0&&& 0&&&&&&& 0可以看到集群的名字是默认的&elasticsearch&,集群的状态时&green&。这个颜色之前也有说过:1 绿色,最健康的状态,代表所有的分片包括备份都可用2 黄色,基本的分片可用,但是备份不可用(也可能是没有备份)3 红色,部分的分片可用,表明分片有一部分损坏。此时执行查询部分数据仍然可以查到,遇到这种情况,还是赶快解决比较好。上面的结果还可以看到,目前有一个节点,但是没有分片,这是因为我们的ES中还没有数据,一次也就没有分片。&当使用elasticsearch作为集群名字时,会使用单播,查询本机上是否还运行着其他的节点。如果有,则组成一个集群。(如果使用其他的名字作为集群名字,那么就可能采用多播了!这个在工作中,经常会遇到,大家使用的是一个集群名字,分片总是被搞在一起,导致有人的机器下线后,自己的也无法使用)&通过下面的命令,可以查询节点的列表:curl 'localhost:9200/_cat/nodes?v'得到的结果如下:curl 'localhost:9200/_cat/nodes?v'host&&&&&&&& ip&&&&&&& heap.percent ram.percent load node.role master namemwubuntu1&&& 127.0.1.1&&&&&&&&&&& 8&&&&&&&&&& 4 0.00 d&&&&&&&& *&&&&& New Goblin查看所有的索引在ES中索引有两个意思:1 动词的索引,表示把数据存储到ES中,提供搜索的过程;这期间可能正在执行一个创建搜索的过程。2 名字的索引,它是ES中的一个存储类型,与类似,内部包含type字段,type中包含各种文档。通过下面的命令可以查看所有的索引:curl 'localhost:9200/_cat/indices?v'得到的结果如下:curl 'localhost:9200/_cat/indices?v'health index pri rep docs.count docs.deleted store.size pri.store.size由于集群中没有任何的数据,上面的结果中也就只包含列的信息了。创建索引下面是创建索引,以及查询索引的例子:curl -XPUT 'localhost:9200/customer?pretty'{& &acknowledged& : true}curl 'localhost:9200/_cat/indices?v'health index&&& pri rep docs.count docs.deleted store.size pri.store.sizeyellow customer&& 5&& 1&&&&&&&&& 0&&&&&&&&&&& 0&&&&&& 495b&&&&&&&&&& 495b上面的结果中,customer索引的状态是yellow,这是因为此时虽然有5个主分片和一个备份。但是由于只是单个节点,我们的分片还在运行中,无法动态的修改。因此当有其他的节点加入到集群中,备份的节点会被拷贝到另一个节点中,状态就会变成green。索引和搜索文档之前说过,索引里面还有类型的概念,在索引文档之前要先设置类型type。执行的命令如下:curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '{& &name&: &John Doe&}'执行成功后会得到如下的信息:{& &_index& : &customer&,& &_type& : &external&,& &_id& : &1&,& &_version& : 1,& &created& : true}注意2.0版本的ES在同一索引下,不同的类型,相同的字段名字,是不允许字段类型不一致的。上面的例子中,为我们创建了一个文档,并且id自动设置为1.ES不需要再索引文档前,不需要明确的创建索引,如果执行上面的命令,索引不存在,也会自动的创建索引。执行下面的命令查询,返回信息也如下:curl -XGET 'localhost:9200/customer/external/1?pretty'{& &_index& : &customer&,& &_type& : &external&,& &_id& : &1&,& &_version& : 1,& &found& : true, &_source& : { &name&: &John Doe& }}这里会新增两个字段:1 found 描述了请求信息2 _source 为之前索引时的数据删除索引执行下面的命令就可以删除索引:curl -XDELETE 'localhost:9200/customer?pretty'返回结果:{&&& &acknowledged&: true}总结总结上面涉及到的命令大致如下:curl -XPUT 'localhost:9200/customer'//创建索引//插入数据curl -XPUT 'localhost:9200/customer/external/1'-d '{& &name&: &John Doe&}'curl 'localhost:9200/customer/external/1'//查询数据curl -XDELETE 'localhost:9200/customer'//删除索引
上一页: &&&&&下一页:相关内容}

我要回帖

更多关于 elasticsearch 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信