elasticsearch使用


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 查看进程

功能模块:

Elasticsearch: Store, Search, and Analyze

Shield: Security for Elasticsearch

Marvel: Manage, Monitor, and Optimize Elasticsearch

Kibana: Explore, Visualize and Share

Logstash: Collect, Enrich and Transport

Elasticsearch for Apache Hadoop

常用插件:

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做为索引名。

 

 

 

你可能感兴趣的:(搜索引擎,java)