elasticsearch权威指南学习笔记一

elasticsearch是什么?

elasticsearch是一个基于apache lucene,实时分布式搜索和分析引擎。也是用java开发的,经过使用Restful api来封装lucene的底层实现,使得交互变得简单。和通常的数据库不一样的是,它能够进行全文搜索,处理同义词和根据相关性给文档打分,根据同一份数据生成分析和聚合的结果等。

安装elasticsearch

下载: https://www.elastic.co/downloads/elasticsearch 后解压,进入到elasticsearch目录,运行:./bin/elasticsearch -d后台启动elasticsearch
注意:1):2.* 版本及如下支持jdk7,2.*版本以上要求jdk8
2):vi ./config/elasticsearch.yml  network.host: 0.0.0.0 #容许外网访问

restfulapi与es交互

curl -X<VERB> '<PROTOCOL>://<HOST>/<PATH>?<QUERY_STRING>' -d '<BODY>' 
例如:
curl -XGET ‘http://10.128.208.93:9200/_count?pretty’ -d '{"query":{"match_all":{}}}'
VERB HTTP方法: GET , POST , PUT , HEAD , DELETE
PROTOCOL http或者https协议(只有在Elasticsearch前面有https代理的时候可用)
HOST Elasticsearch集群中的任何一个节点的主机名,若是是在本地的节点,那么就叫localhost
PORT Elasticsearch HTTP服务所在的端口,默认为9200
QUERY_STRING 一些可选的查询请求参数,例如 ?pretty 参数将使请求返回更加美观易读的JSON数据
BODY 一个JSON格式的请求主体(若是请求须要的话)

概念与关系型数据库对比

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields

例子:es数据的简单操做

新增:
curl -XPUT 'http://localhost:9200/megacorp/employee/1'
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
搜索id为1的:
curl -XGET 'http://localhost:9200/megacorp/employee/1'
搜索类型为employee的所有数据:
curl -XGET 'http://localhost:9200/megacorp/employee/_search?pretty'
按条件查询:
curl -XGET 'http://localhost:9200/megacorp/employee/_search?pretty&q=last_name:Smith'
DSL查询:
curl -XGET 'http://localhost:9200/megacorp/employee/_search?pretty' -d '{"query":{"match":{"last_name":"Smith"}}}'
找到姓氏为“Smith”的员工,可是咱们只想获得年龄大于30岁的员工:
全文搜索:
搜索全部喜欢“rock climbing”的员工:
高亮搜索:

聚合:按兴趣字段进行统计java

统计每种兴趣下职员的平均年龄:

 

相关文章
相关标签/搜索