第一章 Elasticsearch简介
高扩展的分布式全文检索引擎,目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
全文检索引擎的核心倒排索引技术,先创建索引在进行搜索的一个过程
第二章 核心概念
Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。Elasticsearch比传统关系型数据库如下:
索引库(indexes)------------->数据库(Databases)
类型(type)------------------>数据表(Table)
文档(Document)-------------->行(Row)
字段(Field)----------------->列(Columns)
映射(mappings)-------------->DDL创建数
第三章 基本操作
据库表的语句:
实际开发中,有五种方式操作Elasticsearch服务:
-
第一类:发送http请求(RESTful风格)操作:9200端口
-
使用Postman发送请求直接操作。
-
使用ElasticSearch-head-master图形化界面插件操作
-
使用Elastic官方数据可视化的平台Kibana进行操作
-
-
第二类:通过Java代码操作:9300端口
-
Elasticsearch提供的Java API 客户端进行操作。
-
Spring Data ElasticSearch 持久层框架进行操作。
-
1.创建索引库
PUT /heima
2.查看索引库
GET /heima
3.删除索引库
DELETE /heima
4.2 类型(type)及映射(mapping)操作
1.配置映射
给heima这个索引库添加了一个名为goods
的类型,并且在类型中设置了4个字段:
-
title:商品标题
-
subtitle: 商品子标题
-
images:商品图片
-
price:商品价格
2.查看映射
GET /heima/goods/_mapping
4.3 文档操作
POST /heima/goods
{
"title":"小米手机",
"images":"http://image.leyou.com/12479122.jpg",
"price":2699.00
}
2.查看文档
GET /heima/goods/EwVLY24BL4R5dXuhZ--1
3.自定义id新增文档
POST /heima/goods/1
{
"title":"小米手机",
"images":"http://image.leyou.com/12479122.jpg",
"price":2699.00
}
4.修改文档
POST /heima/goods/1
{
"title":"超米手机",
"images":"http://image.leyou.com/12479122.jpg",
"price":3899.00
}
5.删除文档
DELETE /heima/goods/1
6.发送请求批量操作_bulk
POST /heima/goods/_bulk
{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n
...
第四章 请求体查询
1、查询所有(match_all)
2、匹配查询(match)
match
类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系
3、多字段匹配查询(multi_match)
multi_match
与match
类似,不同的是它可以在多个字段中查询
4、关键词精确查询(term)
term查询,精确的关键词匹配查询,不对象查询条件进行分词
5、多关键词精确查询(terms)
terms
查询和 term 查询一样,但它允许你指定多值进行匹配。如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于mysql的in:
6.结果过滤
默认情况下,elasticsearch在搜索的结果中,会把文档中保存在_source
的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source
的过滤
7、布尔组合(bool)
bool
把各种其它查询通过must
(必须 )、must_not
(必须不)、should
(应该)的方式进行组合
8、范围查询(range)
range
查询找出那些落在指定区间内的数字或者时间。range
查询允许以下字符:
9、模糊查询(fuzzy)
fuzzy自动将拼写错误的搜索文本,进行纠正,纠正以后去尝试匹配索引中的数据。它允许用户搜索词条与实际词条出现偏差,但是偏差的编辑距离不得超过2:
10、单字段排序
sort
可以让我们按照不同的字段进行排序,并且通过order
指定排序的方式。desc降序,asc升序。
11、多字段排序
假定我们想要结合使用 price和 _score(得分) 进行查询,并且匹配的结果首先按照价格排序,然后按照相关性得分排序:
12、高亮查询请求
ElasticSearch可以对查询内容中的关键字部分,进行标签和样式(高亮)的设置。
在使用match查询的同时,加上一个highlight属性:
-
pre_tags:前置标签
-
post_tags:后置标签
-
fields:需要高亮的字段
-
title:这里声明title字段需要高亮,后面可以为这个字段设置特有配置,也可以空
-