http://es.xiaoleilu.com/010_Intro/10_Installing_ES.html
http://www.ibm.com/developerworks/cn/java/j-javadev2-24/
http://www.elasticsearch.cn/
ps -aux | grep elasticsearch 查看进程
功能模块:
常用插件:
head
1、下载安装插件:
http://ju.outofmemory.cn/entry/50615
plugin --install
具体的
如果网络不太顺畅,可以下载好插件的压缩包后以如下方式安装:
bin/plugin --url file://path/to/plugin --install plugin-name
Head可以查看索引情况,搜索索引,查看集群状态和分片分布等
plugin -install mobz/elasticsearch-head
查看:http://10.0.0.121:9200/_plugin/head/
BigDesk该插件可以查看集群的jvm信息,磁盘IO,索引创建删除信息等,适合查找系统瓶颈,监控集群状态等
plugin -install lukas-vlcek/bigdesk
查看:http://10.0.0.121:9200/_plugin/bigdesk/#nodes
Monitoring and Management Web Application for ElasticSearch instances and clusters.
plugin -install royrusso/elasticsearch-HQ
http://10.0.0.121:9200/_plugin/HQ/
http://localhost:9200/_plugin/HQ/
Marvel是Elasticsearch的管理和监控工具,在开发环境下免费使用。它包含了一个叫做Sense的交互式控制台,使用户方便的通过浏览器直接与Elasticsearch进行交互。
plugin -i elasticsearch/marvel/latest
查看:http://10.0.0.121:9200/_plugin/marvel/
http://10.0.0.121:9200/_plugin/marvel/sense/
Sense控制台:
http://localhost:9200/_plugin/marvel/sense/index.html
Kibana 新版本插件需要收费了?
Kibana是一个用于ElasticSearch分析和查询的仪表盘,生动的展示了数据的变化趋势、并提供查询能力。
以前Js版本安装方法:
http://my.oschina.net/pangyangyang/blog/339683
丢入tomcat目录,配置config.js文件,编辑“elasticsearch”字段指向你的es uri。
function (Settings) {
return new Settings({
elasticsearch: "http://10.128.170.245:9200",
})
}
Download: http://www.elastic.co/downloads/kibana
Run bin/kibana on unix, or bin\kibana.bat on Windows.
Visit http://localhost:5601
Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
kibana 也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面。他可以为 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面
https://github.com/elastic/logstash
历史版本下载:
https://www.elastic.co/downloads/past-releases
当前测试的版本:Elasticsearch v1.4.2
2、查看已经加载的插件:
http://10.0.0.120:9200/_nodes/plugin
指定实例:
http://10.0.0.121:9200/_nodes/10.0.0.120/plugin
3、ElasticSearch自动集群配置:
http://www.open-open.com/lib/view/open1398827529984.html
各个节点修改config/elasticsearch.yml文件,设置node.name的值
各个es服务同时启动起来,因为配置文件中均默认cluster.name=elasticsearch,所以这两台机器自动构建成一个集群,集群名字为elasticsearch。
http://www.searchtech.pro/articles/2013/02/18/1361194462828.html
如果是在局域网中运行elasticsearch集群也是很简单的,只要cluster.name设置一致,并且机器在同一网段下,启动的es会自动发现对方,组成集群。
4、elasticsearch插件大全(不断更新)
http://www.searchtech.pro/elasticsearch-plugins
其他相关资料:
elasticsearch使用jetty进行简单的权限控制
http://www.searchtech.pro/elasticsearch-security-with-jetty
5、Java客户端开发包和开发环境:
Java客户端开发包:jest:
https://github.com/searchbox-io/Jest
es官方教程:
http://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html
Jest官方文档:
https://github.com/searchbox-io/Jest/tree/master/jest
下载完jest的官方maven工程:在单元测试类AbstractIntegrationTest修改es服务的连接路径:默认:http://localhost
自己编译的jest使用jdk8时javadoc.exe存在问题:换成jdk7即可:
set java_home=C:\Program Files (x86)\Java\jdk1.7.0_60
mvn install -Dmaven.test.skip=true 即可编译完成jest-0.1.6-SNAPSHOT.jar
Android版jest
https://github.com/searchbox-io/Jest/tree/master/jest-droid
其他语言客户端开发包大全:
http://www.searchtech.pro/elasticsearch-clients
6、基本操作:
查看集群健康值:
http://10.0.0.126:9200/_cluster/health?pretty
关闭集群:
http://10.0.0.126:9200/_cluster/nodes/_shutdown
查看集群中节点信息:
http://10.0.0.126:9200/_cluster/state/nodes/?pretty
查看集群中文档数量:
curl -i -XGET 'http://localhost:9200/_count?pretty' -d '{ "query": { "match_all": {} }}'
建立索引:
curl -XPUT 'http://localhost:9200/twitter/user/kimchy' -d '{ "name" : "Shay Banon" }'
curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '
{
"user": "kimchy",
"postDate": "2009-11-15T13:12:00",
"message": "Trying out Elasticsearch, so far so good?"
}'
curl -XPUT 'http://localhost:9200/twitter/tweet/2' -d '
{
"user": "kimchy",
"postDate": "2009-11-15T14:12:12",
"message": "Another tweet, will it be indexed?"
}'
查看索引:
Now, let's see if the information was added by GETting it:
curl -XGET 'http://localhost:9200/twitter/user/kimchy?pretty=true'
curl -XGET 'http://localhost:9200/twitter/tweet/1?pretty=true'
curl -XGET 'http://localhost:9200/twitter/tweet/2?pretty=true'
Demo:创建员工索引:
http://es.xiaoleilu.com/010_Intro/25_Tutorial_Indexing.html
在sense控制台中执行下面命令:
http://localhost:9200/_plugin/marvel/sense/index.html
PUT /megacorp/employee/1{ "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ]}
/megacorp/employee/1
/_Index索引名/_type类型名/_id这个员工的ID
搜索数据:
GET /megacorp/employee/_search
条件查询:
GET /megacorp/employee/_search?q=last_name:Smith
使用DSL语句查询,传递查询请求体:
GET /megacorp/employee/_search
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}
GET /megacorp/employee/_search
{
"query" : {
"filtered" : {
"filter" : {
"range" : {
"age" : { "gt" : 30 }
}
},
"query" : {
"match" : {
"last_name" : "smith"
}
}
}
}
}
全文检索:
GET /megacorp/employee/_search{ "query" : { "match" : { "about" : "rock climbing" } }}
短语搜索:
GET /megacorp/employee/_search{ "query" : { "match_phrase" : { "about" : "rock climbing" } }}
高亮搜索:
GET /megacorp/employee/_search{ "query" : { "match_phrase" : { "about" : "rock climbing" } }, "highlight": { "fields" : { "about" : {} } }}
聚合(group by):
GET /megacorp/employee/_search{ "aggs": { "all_interests": { "terms": { "field": "interests" } } }}
GET /megacorp/employee/_search{ "query": { "match": { "last_name": "smith" } }, "aggs": { "all_interests": { "terms": { "field": "interests" } } }}
GET /megacorp/employee/_search{ "aggs" : { "all_interests" : { "terms" : { "field" : "interests" }, "aggs" : { "avg_age" : { "avg" : { "field" : "age" } } } } }}
查看集群健康信息:
GET /_cluster/health
主要分片(primary shard)和复制分片(replica shard):
指定3个主分片和一个复制分片:
PUT /blogs
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}
7、理解eclasticsearch概念:
Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。
几乎零配置:
像推荐、定位、渗透、模糊以及部分匹配等。但这也突出了构建高级搜索功能是多么的容易。无需配置,只需要添加数据然后开始搜索!
Elasticsearch为分布式而生,而且被设计为隐藏分布式环境中的复杂性。
Elasticsearch致力于隐藏分布式系统的复杂性,一些操作都是在底层自动完成的:
· 将你的文档分区到不同的容器或者分片(shards)中,它们可以存在于一个或多个节点中。
· 在集群的不同节点平衡分片,合理分布索引和搜索负载。
· 复制每个节点提供数据冗余,防止硬件故障造成的数据丢失。
· 在集群中的任意节点路由到你感兴趣的数据所在节点。
· 当你的集群需要扩展或者节点恢复再分配时做到无缝整合新节点。
Elasticsearch用于构建高可用和可扩展的系统。扩展的方式可以是购买更好的服务器(纵向扩展(vertical scale or scaling up))或者购买更多的服务器(横向扩展(horizontal scale or scaling out))。
Elasticsearch能从更强大的硬件中获得更好的性能,但是纵向扩展也有一定的局限性。真正的扩展应该是横向的,它通过增加节点来传播负载和增加可靠性。
索引:
选择一个索引名。这个名字必须是全部小写,不能以下划线开头,不能包含逗号。让我们使用website做为索引名。