Elasticsearch具备以下特点:分布式,无需人工搭建集群,Restful风格,一切API都遵循Rest原则,容易上手,近实时搜索,数据更新在Elasticsearch中几乎是完全同步的。
Elasticsearch采用Rest风格API,因此其API就是一次http请求,你可以用任何工具发起http请求
创建索引的请求格式:
- 请求方式:PUT
- 请求路径:/索引库名
- 请求参数:json格式:
Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。
对比关系:
索引(indices)--------------------------------Databases 数据库
类型(type)-----------------------------Table 数据表
文档(Document)----------------Row 行
字段(Field)-------------------Columns 列
使用kibana创建
kibana的控制台,可以对http请求进行简化,示例:
相当于是省去了elasticsearch的服务器地址
而且还有语法提示,非常舒服。
查看索引设置
语法:GET /索引库名
或者,我们可以使用*来查询所有索引库配置:
删除索引使用DELETE请求,当然,我们也可以用HEAD请求,查看索引是否存在:
2.5.映射配置
索引有了,接下来肯定是添加数据。但是,在添加数据之前必须定义映射。
什么是映射?
映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等
2.5.2.查看映射关系
语法:
GET /索引库名/_mapping
我们从4块来讲查询:
- 基本查询
查询所有(match_all)
匹配查询(match)
多字段查询(multi_match)
词条匹配(term)
多词条精确匹配(terms) - _source过滤
- 结果过滤
默认情况下,elasticsearch在搜索的结果中,会把文档中保存在_source的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source的过滤 - 高级查询
布尔组合(bool)
bool把各种其它查询通过must(与)、must_not(非)、should(或)的方式进行组合
范围查询(range)
ange`查询允许以下字符:
操作符 说明
gt 大于
gte 大于等于
lt 小于
lte 小于等于
模糊查询(fuzzy)
过滤(filter):条件查询中进行过滤无查询条件,直接过滤 - 排序
单字段排序
sort(艘特) 可以让我们按照不同的字段进行排序,并且通过order指定排序的方式
多字段排序
假定我们想要结合使用 price和 _score 进行查询,并且匹配的结果首先按照价格排序,然后按照相关性得分排序:
聚合aggregations
Elasticsearch中的聚合,包含多种类型,最常用的两种,一个叫桶,一个叫度量:
桶(bucket)
桶的作用,是按照某种方式对数据进行分组,每一组数据在ES中称为一个桶
度量(metrics)
分组完成以后,我们一般会对组中的数据进行聚合运算,例如求平均值、最大、最小、求和等,这些在ES中称为度量