ElasticSearch安装与配置

/ 后端 / 无站内评论 / 334浏览


下载


首先我们下载ES


官网:https://www.elastic.co/downloads/elasticsearch


但是速度实在太慢了,下面贴第一第三方的


http://www.onlinedown.net/soft/988779.htm


注意:需要安装Java与配置环境变量。




安装


把下载的工具包解压后,



  1. bin-存放可执行文件


config--存放配置文件


data--存放es保存的所有index数据


lib--存放jar包


logs--存放日志文件


plugins--存放你安装的插件


启动 bin/elasticsearch -d (后台启动)


  1. 进入bin目录双击elasticsearch.bat运行
  2. 也可以使用cmd进入bin目录 bin/elasticsearch启动
  3. 启动成功界面





4.运行完毕后在浏览器中测试一下,输入http://127.0.0.1:9200/,若返回的status为200则表示运行成功




5.安装ElasticSearch Head插件(head插件可以用来快速查看elasticsearch中的数据概况以及非全量的数据,也支持控件化查询和rest请求,一般就用它来看各个索引的数据量以及分片的状态),打开命令提示符窗口,输入以下命令:


plugin -install mobz/elasticsearch-head


head插件是es的一个可视化插件,类似于workbench跟mysql的关系.


安装完之后,访问 http://localhost:9200/_plugin/head/ 即可



6,将ElasticSearch 安装成Windows服务(Service)


1,打开DOS命令行界面,切换到ElasticSearch的bin目录,执行


service.bat install


2,启动ElasticSearch服务


service.bat start




基本语法


在安装head插件后打开http://localhost:9200/_plugin/head/


点击复合查询:


输入_cluster/health


使用Head插件,向ES服务器发送Request,获取集群的健康状态::





CURL工具下载地址:http://www.jb51.net/softs/26480.html


搜索API


ES提供了两种搜索的方式:请求参数方式 和 请求体方式


请求参数方式


curl 'localhost:9200/bank/_search?q=*&pretty'


其中bank是查询的索引名称,q后面跟着搜索的条件:q=*表示查询所有的内容


请求体方式(推荐这种方式)


curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' { "query": { "match_all": {} } }'


这种方式会把查询的内容放入body中,会造成一定的开销,但是易于理解。在平时的练习中,推荐这种方式。




以下内容转载自简书--


第一步:创建员工目录,为每个员工的文档(document)建立索引,每个文档包含了相应员工的所有信息。


  1. 每个文档的类型为employee



  1. employee类型归属于索引megacorp



  1. megacorp索引存储在Elasticsearch集群中。


PUT /megacorp/employee/1 { "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }


上图代表的意思是在一个叫megacorp的索引(index)中建立了一个叫


employee的类型(type),它的ID是1,整个json部分代表的是这个id为1的文档(document).


同样的,我们再次插入两个document.


PUT /megacorp/employee/2 { "first_name" : "Jane", "last_name" : "Smith", "age" : 32, "about" : "I like to collect rock albums", "interests": [ "music" ] } PUT /megacorp/employee/3 { "first_name" : "Douglas", "last_name" : "Fir", "age" : 35, "about": "I like to build cabinets", "interests": [ "forestry" ] }






搜索,上一步中插入了3个document,我们可以通过http get来获取它们的信息.



GET /megacorp/employee/1



{ "_index" : "megacorp", "_type" : "employee", "_id" : "1", "_version" : 1, "found" : true, "_source" : { "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] } }



_index--索引名称


_type--类型名称


_id--id(这个id可以自己指定也可以自动生成)


_version--版本号,每次改动会+1


found--true表示在document存在


_source--document的全部内容





轻量级搜索,查询字符串(query string)



GET /megacorp/employee/_search?q=last_name:Smith



{ "took": 6, //花费的时间(毫秒) "timed_out": false, //是否超时 "_shards": { ... }, //分片相关,后续介绍 "hits": { //存放所有命中 "total": 2, //命中document的个数 "max_score": 0.30685282, //最高命中分 "hits": [ { ... "_source": { "first_name": "John", "last_name": "Smith", "age": 25, "about": "I love to go rock climbing", "interests": [ "sports", "music" ] } }, { ... "_source": { "first_name": "Jane", "last_name": "Smith", "age": 32, "about": "I like to collect rock albums", "interests": [ "music" ] } } ] } }




Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。我们可以这样表示之前关于“Smith”的查询:


GET /megacorp/employee/_search { "query" : { "match" : { "last_name" : "Smith" } } }




更复杂的搜索,使用过滤器(filter)来实现sql中where的效果,比如:你想要搜索一个叫Smith,且年龄大于30的员工,可以这么检索.


GET /megacorp/employee/_search { "query" : { "filtered" : { "filter" : { "range" : { "age" : { "gt" : 30 } } }, "query" : { "match" : { "last_name" : "Smith" } } } } }




短语搜索(phrases),match_phrase与match的区别在于,前者会把rock climbing(搜索条件)作为一个整体,而后者会命中rock balabala climbing


GET /megacorp/employee/_search { "query" : { "match_phrase" : { "about" : "rock climbing" } } }




聚合(aggregations),它允许你在数据上生成复杂的分析统计,类似于sql中的group by.


GET /megacorp/employee/_search { "aggs": { "all_interests": { "terms": { "field": "interests" } } } }



{ ... "hits": { ... }, "aggregations": { "all_interests": { "buckets": [ { "key": "music", "doc_count": 2 }, { "key": "forestry", "doc_count": 1 }, { "key": "sports", "doc_count": 1 } ] } } }




如果我们想知道所有姓"Smith"的人最大的共同点(兴趣爱好),我们只需要增加合适的语句既可:


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" } } } } } }



... "all_interests": { "buckets": [ { "key": "music", "doc_count": 2, "avg_age": { "value": 28.5 } }, { "key": "forestry", "doc_count": 1, "avg_age": { "value": 35 } }, { "key": "sports", "doc_count": 1, "avg_age": { "value": 25 } } ] }






作者:MacSam


链接:http://www.jianshu.com/p/f437b893502a


來源:简书


著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


召唤蕾姆
琼ICP备18000156号

鄂公网安备 42011502000211号