elasticsearch权威指南学习笔记一
2019-11-06

elasticsearch是什么?

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

安装elasticsearch

下载:https://www.elastic.co/downloads/elasticsearch 后解压,进入到elasticsearch目录,运行:./bin/elasticsearch -d后台启动elasticsearch注意:1):2.* 版本及以下支持jdk7,2.*版本以上要求jdk82):vi ./config/elasticsearch.yml  network.host: 0.0.0.0 #允许外网访问3):安装Marvel:https://blog.csdn.net/xu470438000/article/details/54090234

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 , DELETEPROTOCOL http或者https协议(只有在Elasticsearch前面有https代理的时候可用)HOST Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫localhostPORT Elasticsearch HTTP服务所在的端口,默认为9200QUERY_STRING 一些可选的查询请求参数,例如 ?pretty 参数将使请求返回更加美观易读的JSON数据BODY 一个JSON格式的请求主体(如果请求需要的话)

概念与关系型数据库对比

Relational DB -> Databases -> Tables -> Rows -> ColumnsElasticsearch -> 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”的员工:高亮搜索:

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

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