Elasticsearch01

第一章 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_matchmatch类似,不同的是它可以在多个字段中查询

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字段需要高亮,后面可以为这个字段设置特有配置,也可以空

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值