返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.htmlhtml
a. Elasticsearch是一个基于Lucene的开源搜索引擎,不管是在开源仍是专有领域,Lunce被认为是迄今为止最早进、性能最好、功能最全的搜索引擎库,可是Lucene只是一个库,想要使用它,您必须使用Java来做为开发语言并将其直接继承到你的应用中,更糟糕的是Lucene很是复杂,你须要深刻了解检索的相关只是来理解它是如何工做的。java
b. Elasticsearch也使用Java开发而且使用Lucene做为其核心来实现全部索引和搜索的功能,可是它的目的是经过简单的RESTful API来隐藏Lucene的复杂性,从而使其全文检索变得简单,不过Elasticsearch不只仅是Lucene和全文检索,请看下面的描述:node
b.1 分布式的实时文件存储,每一个字段都被索引而且可被搜索linux
b.2 分布式的实时分析搜索引擎编程
b.3 能够扩展到上百台服务器,处理PB级结构化或非结构化数据api
c. 并且这些功能都被集成到一个服务里面,你的应用能够经过简单的RESTful API、各类语言的客户端甚至命令行与之交互(这篇文章说的就是这点)。服务器
d. lucene的简单学习过程请参考:http://www.cnblogs.com/hanyinglong/p/5387816.html网络
e.Elasticsearch学习文档:http://es.xiaoleilu.com/curl
a. 在第一篇文章中咱们对Elasticsearch已经有了简单的了解而且在Linux下面配置访问成功了,若是你们没有配置,请参考第一篇文章进行配置而且了解。jvm
b. 那么当咱们配置完成以后须要干什么呢?固然是对Elasticsearch进行操做了(增删改查),可是在操做以前,咱们是否是先要知道如何与Elasticsearch进行通讯呢,于Elasticsearch通讯的方式很是多,咱们能够经过简单的RESTful API、各类语言的客户端和命令行与之通讯,在本博客中咱们使用Java、.NET客户端和命令行进行通讯说明,下面我会阐述这三种方式。
c. 简单说明一下Elasticsearch的集群和节点的概念
c.1 节点(node)是Elasticsearch运行的实例。
c.2 集群就是一组有着一样cluster.name的节点,他们协同工做,互相分享数据,提供了故障转移和扩展的功能,固然一个节点也能够是一个集群。
c.3 您最好找一个合适的名字来替代cluster.name的默认值,好比您本身的名字,这样就能够防止一个新启动的节点加入到相同网络中的另外一个同名的集群中。
c.4 能够经过修改config/目录下的elasticsearch.yml文件,而后重启Elasticsearch来替换节点名称,当Elasticsearch在前台运行的时候,可使用ctrl+c快捷键终止,或者你也能够调用shutdown API来关闭:
curl -XPOST 'http://192.168.37.133:9200/_shutdown'
d. 关于集群后面我会对其进行再次的说明,我对Elasticsearch已经作了集群,可是配置方法研究的还不是很明白,后面研究明白了会给你们分享出来。
e.Elasticsearch学习:https://www.elastic.co/guide/index.html
a. 编程中的大部分语言均可以使用RESTful API,经过9200端口于Elasticsearch进行通讯,你可使用你拿手的技术来用,甚至Elasticsearch能够经过curl命令与Elasticsearch通讯。
b. 使用curl向Elastic发出的请求的组成部分与其余普通的Http请求时同样的,格式以下:
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>'-d'<BODY>'
b.1 VERB HTTP方法:GET、POST、PUT、HEAD、DELETE
b.2 PROTOCOL http或者https协议(只有在Elasticsearch前面有https代理的时候可用)
b.3 HOST Elasticsearch集群中的任何一个节点的主机名,若是是在本地的节点,则为:localhost、127.0.0.1
b.4 PROT Elasticsearch Http服务所在的端口,默认为9200
b.5 PATH API路径(例如_count将返回集群中文档的数量),Path能够包含多个组件,例如_cluster/stats或者_nodes/stats/jvm
b.6 QUERY_STRING 一些可选的查询请求参数,例如?pretty参数将使请求返回更加美观易读的JSON数据
b.7 BODY 一个JSON格式的请求主体。
c.上面咱们简单说了一下使用curl的格式,下来简单的使用一下这个命令(首先在linux下找到安装的Elasticsearch,启动(./bin/elasticsearch)),命令如图所示:
c.1 上面的命令为发送请求的命令,下面的命令为发送请求以后响应的命令
c.2 发送请求以后,Elasticsearch会返回一个相似于200 OK的HTTP状态码和JSON格式的响应主题,如上图返回的响应信息所示:
c.3 可是咱们在这里发现咱们没有看到HTTP表头呢?那是由于在curl里面要显示,必须在curl命令后面跟 -i参数,以下图所示:
d.后面会专门写博客来使用curl操做Elasticsearch。
a. Elasticsearch为Java用户提供了两种内置的客户端:
a.1 节点客户端(node client):节点客户端以无数据节点(node data node)身份加入集群,换言之,他本身不存储任何数据,可是它知道数据在集群中的具体位置,而且可以直接转发请求到对应的节点上。
a.2 传输客户端(transport client):更轻量的客户端,可以发送请求到远程集群,它本身不加入集群,只是简单转发请求给集群中的节点。
b. 两个Java客户端都经过9300端口和集群交互,使用Elasticsearch传输协议(ELasticsearch Transport Protocol),集群中的节点之间也是经过9300端口进行通讯,若是此端口未开放,你的节点将不能组成集群。
c. Java客户端所在的Elasticsarch必须与集群中其它的节点一致,不然可能没法互相识别。
d. 详细信息请参考:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html
e. 后面会专门写一篇博客来使用Java操做ELasticsearch。
a. .NET API和Java API基本同样,也是含有开源的组件。
b. 详细信息请参考:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/index.html
c. 后面会专门写一篇博客来使用.NET操做ELasticsearch。
经过这篇文章,咱们了解了ELasticsearch是如何进行通信的,那么接下来咱们将会说一下Elasticsearch索引以及使用CURL建立增删改索引。
天天一点点都是进步
若是文章哪里存在问题,欢迎你们指出来,我会在第一时间修改。