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”的员工:
高亮搜索:

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

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

 

posted @ 2018-07-31 19:24  domi爹  阅读(795)  评论(0编辑  收藏  举报