狂神说Elastic search学习笔记

视频链接:

简介

lucene是一套信息检索工具包!jar包,不包含搜索引擎系统
包含:索引结构,读写索引的工具!排序,搜索规则工具类
lucene和es的关系:
es是基于lucene做的一些封装和增强

es是一个开源的高扩展分布式的全文检索引擎,它可以近乎实时的存储,检索数据,本身扩展性好,可以扩展到上百台服务器,处理pb(大数据时代)级别的数据,它通过简单的RESTful APi来隐藏lucene的复杂性,从而让全文搜索变得简单。
用于:全文搜索,结构化搜索,分析

es vs solr:
在这里插入图片描述

安装

下载地址:找到对应的版本即可
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D

es安装

声明:JDK1.8最低要求,es客户端,界面工具
window下学习
ELK解压即用
elastic search版本7.6.1
plugins用于存放插件如ik分词器。
在这里插入图片描述
双击bin包下面的elasticsearch.bat文件启动
在这里插入图片描述

可能存在闪退问题
解决方案:
在config/elasticsearch.yml添加一条配置:xpack.ml.enabled: false

在这里插入图片描述
访问9200端口,成功
在这里插入图片描述

自称集群

安装可视化界面

没有npm,node.js环境不能启动
1.下载地址:https://github.com/mobz/elasticsearch-head
2.npm install
在这里插入图片描述
3.启动:npm run start
在这里插入图片描述
在这里插入图片描述
存在跨域问题
在这里插入图片描述

4.修改elasticsearch.yml,跨域配置:
http.cors.enabled: true
http.cors.allow-origin: “*”
重启es服务,连接成功
在这里插入图片描述
索引相当于数据库(表:文档)
在这里插入图片描述

创建成功
在这里插入图片描述

这个head仅把他当作数据展示工具,查询去kibana

下载kibana

解压即用,双击启动
在这里插入图片描述
访问测试
在这里插入图片描述

未来通过此开发
在这里插入图片描述

es核心概念理解

es是面向文档的,一切都是json,和关系型数据库对比

relationDBes
数据库索引
types(慢慢会被弃用)
documents
字段fields

物理设计:
es在后台把每个索引划分为多个分片,每个分片可以在集群中的不同服务器迁移
一个人就是一个集群!默认集群名称:
在这里插入图片描述
数据库的最小单位是文档,文档有几个重要的属性同时包含key:value

分片(倒排索引)

es使用的是一种倒排索引的结构,采用lucene倒排索引作为底层,这种数据结构适用于快速的全文搜索
。。。。。。

ik分词器插件

如果使用中文,建议使用ik分词器。
ik提供了两个分词算法:ik_smart和ik_max_word,其中ik_smart为最少切分,ik_max_word为最细粒度划分

安装

1.下载(注意版本对应,7.6.1):https://github.com/medcl/elasticsearch-analysis-ik
2.下载放入es的plugins中
在这里插入图片描述
3.重启es观察
在这里插入图片描述
4.使用elasticsearch-plugin来查看加载进来的插件
在这里插入图片描述
5.使用kibana测试
查看不同分词器的效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发现问题,狂神说被拆开了,可以自己通过配置文件扩展字典
在这里插入图片描述
新建自己的字典
在这里插入图片描述
在这里插入图片描述
重启es,再次测试
在这里插入图片描述

rest风格操作

删除多余的索引库
在这里插入图片描述
1.创建索引
put /索引名/类型名/文档id
{请求体}
请求也可以用postman发送
put /test/type1/1
{
“name”:“狂神说”,
“age”:3
}
查看
在这里插入图片描述
2.指定字段的类型
创建索引和字段类型。
在这里插入图片描述
3.get获取信息

在这里插入图片描述
如果文档没有指定类型,es就会给我们配置默认数据类型
在这里插入图片描述
扩展:get _cat/indices?v
在这里插入图片描述
put,修改的话版本号会改变
在这里插入图片描述
post修改
在这里插入图片描述

在这里插入图片描述
删除索引
delete test1
删除文档
delete test/type1
删除记录
delete test/type1/1

关于文档的基本操作(重点)

添加数据

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

获取数据

在这里插入图片描述

更新数据(如果参数少了会置空)

version代表数据被改动的次数
在这里插入图片描述

推荐使用POST更新

不加update,其余字段置空
在这里插入图片描述
在这里插入图片描述
加update,修改指定参数
在这里插入图片描述
在这里插入图片描述

匹配查询

在这里插入图片描述
在这里插入图片描述
复杂操作select(排序,分页,高亮,模糊查询,精准查询)

花式查询详解

score代表匹配度,匹配度越高则分值越高
在这里插入图片描述
查询的参数是一个json
在这里插入图片描述
在这里插入图片描述

查询指定字段

我们之后使用java操作es,所有的方法和对象就是这里面的key
在这里插入图片描述

排序

在这里插入图片描述

分页

get fang/user/_search
{
  "query":{
    "match": {
      "name": "李"
    }
  },
  "sort":[
    {
      "age":{
        "order":"desc"
      }  
    }
  ],
  "from":0,
  "size":2
}

在这里插入图片描述

布尔值查询

多条件精确查询
must相当于(and),所有条件都要符合

get fang/user/_search
{
  "query":{
    "bool": {
      "must": [
        {
          "match": {
            "name": "李四你发几款"
          }
        },
        {
          "match": {
            "age": "26"
          }
        }
      ]
    }
  }
}

在这里插入图片描述
should相当于or(where id=1 or name=xxx)

get fang/user/_search
{
  "query":{
    "bool": {
      "should": [
        {
          "match": {
            "name": "李四你发几款"
          }
        },
        {
          "match": {
            "age": "26"
          }
        }
      ]
    }
  }
}

在这里插入图片描述
mustr_not(not)
在这里插入图片描述
过滤器
过滤出小于10的
在这里插入图片描述

  • gt 大于
  • gte 大于等于(e=equal)
  • lt 小于
  • lte 小于等于

多条件查询

在这里插入图片描述

精确查询

term查询是直接通过倒排索引指定的词条进程精确查找的
term:精确查找
match:会使用分词 器解析
text类型会被分词器解析,keyword类型不会被分词器解析

高亮查询

搜索的结果可以被html包裹,也可以自定义标签
在这里插入图片描述

springboot整合es

看官方文档

创建空项目

在这里插入图片描述
在这里插入图片描述

创建新的模块

在这里插入图片描述
注意更改目录
在这里插入图片描述
在这里插入图片描述

更改环境
在这里插入图片描述在这里插入图片描述

javascript版本
在这里插入图片描述
在这里插入图片描述
一定要确保我们导入的依赖和es的版本一致
默认版本
在这里插入图片描述
自定义版本
在这里插入图片描述
刷新maven
在这里插入图片描述

@Configuration
public class ElasticSearchConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1",9200,"http")
                )
        );
        return client;
    }
}

api测试

创建索引

    @Test
    void contextLoads() throws IOException {
        CreateIndexRequest request = new CreateIndexRequest("fang_index");
        CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
        System.out.println(createIndexResponse);
    }

在这里插入图片描述

jd实战

新建模块
在这里插入图片描述

改es版本,导包
在这里插入图片描述

数据的获取

爬虫,数据库,消息队列
原码:https://gitee.com/fangQingwpb/ElasticSearch-jd

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值