狂神说Elastic search学习笔记

2023-10-31

视频链接:

简介

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,和关系型数据库对比

relationDB es
数据库 索引
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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

狂神说Elastic search学习笔记 的相关文章

随机推荐

  • c语言字母意义,%C是什么意思? c语言中?和:是什么意思

    导航 网站首页 gt C是什么意思 c语言中 和 是什么意思 C是什么意思 c语言中 和 是什么意思 相关问题 匿名网友 c单个字符输出的意思 s是输出字符串 d是输出整型 f是输出整型 这是在scanf printf这样的函数中 将参数类
  • mbed TLS 概述

    系统概要 mbedtls 也许是最小巧的ssl代码库 高效 便于移植和集成 支持常见的安全算法 如 AES DES RSA ECC SHA256 MD5 BASE64等等 除此之外还支持公钥证书体系 它提供了具有直观的 API 和可读源代码
  • 解决g2o无法编译出g2o_viewer的问题

    如果你的ubuntu系统版本较高 例如Ubuntu20 04 可能在利用原始的g2o进行编译时会提示找不到 Could NOT find QGLVIEWER missing QGLVIEWER LIBRARY 解决方法1 安装必要的库 su
  • can't locate node [xxxx] in package [yyyy]

    在运行范例的launch文件时 提示 ERROR cannot launch node of type chapter2 tutorials example2 a can t locate node example2 a in packag
  • 一、为什么从IDEA打开的JavaFx scene builder,imageView没有响应呢?

    问题描述 不知道大家有没有出现和我一样的问题 就是当用idea打开JavaFx scene builder时呢 imageView是无法正常使用的 解决方法 在JavaFx scene builder中新建一个页面 完成界面设置后保存即可
  • 部分交换主元的高斯消去法

    伪代码 pseudocode 程序 function Gauss a b tol if nargin 2 tol 1e 4 end n size a 1 dimention s zeros n 1 initialize save maxim
  • NBA球员能力雷达图matplotlib,pandas

    name BaseData 球员 score BaseData 得分 assist BaseData 助攻 rebound BaseData 篮板 steal BaseData 抢断 block BaseData 盖帽 num BaseDa
  • 【registry】registry 0.9 源码 在 windows下运行

    1 概述 我在本地mac环境运行了registry源码 然后想在winodws也正常运行 于是将mac下能用的源码拷贝到了windows下 结果一堆报错 基本上全是pom问题 此处我用了2天才搞定了下面是pom整理好的拍照 慎重呀 不要轻易
  • 【图像处理】基于收缩系数的粒子群优化和引力搜索算法的多级图像阈值研究【CPSOGSA】(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文献 1 概述 文献来源 图像分割 IS 是图像处理和计
  • 前端学习——HTML5

    新增语义化标签 新增布局标签
  • C++之对象包含与成员函数不兼容的类型限定符---补充(5)《Effective C++》

    C 值对象那个包含与成员函数不兼容的类型限定符 在上篇博客中 运行代码时候 由于没有对show函数添加const 结果突然报了一个错误 对象包含与成员函数不兼容的类型限定符 所以本篇博客进行一个快速补充 在解释这个问题之前 我们先来看看如下
  • HCM SaaS市场百舸争流,肯耐珂萨为何能立于潮头?

    科技树总在飞快生长 叠加上后疫情这个宏大的时代背景 无论是从大的千行百业 抑或是具体的企业各个业务环节的角度来看 一场声势浩大的数字化浪潮正奔涌而来 浩浩汤汤 焦距拉长 基于企业这个微观视角 相对于其他业务环节 人力资源管理的重要性越发凸显
  • jquery 中 change input 事件失效

    今天工作的时候 遇到了用jquery选择 input输入框 监听input中的内容变化 然后将input中的内容获取到 赋值给另一个input输入框 这种逻辑本来很简单的 代码如下 showProductInfo append tr td
  • Tomcat内存优化4.1 内存泄漏——内存分析工具 MAT 的使用

    在eclipse安装 使用MAT插件 简介 Eclipse提供的一个内存分析工具 它是一个功能丰富的 JAVA 堆转储文件分析工具 可以帮助你发现内存漏洞和减少内存消耗 官网地址 Eclipse Memory Analyzer Open S
  • 从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新

    本自动化测试框架采用python unittest 的基础来搭建 采用PO模式 数据驱动的思想 通过selenium来实现WEB UI自动化 通过request来实现接口自动化 移动终端的自动化也可在该框架基础上去构建补充 目录 总体框架
  • 线扫相机——机器视觉中无限制物体的检测(重要转载)

    在机器视觉中 在检测连续物体或者滚动物体时 线扫相机是最佳的解决方案 通常 它们能提供很高的分辨率 因为它们要求很高的速度和数据率 一 多条窄带拼成一副图像 线扫相机只抓取一行作为图像发送到电脑 主机电脑将所有的行进行组织拼接 如果不停止抓
  • C++四大特性——多态 的总结

    我们都知道 C语言和C 的区别就是 C语言是面对过程的程序设计 而C 是面对对象的程序设计 面对对象的程序设计有4大特性 分别是 抽象 封装 继承 多态 今天我们就来总结一下多态的内容 多态 分为静态多态和动态多态 静态多态 编译器在编译期
  • 统计学知识:相关系数

    公众号 尤而小屋作者 Peter编辑 Peter 大家好 我是Peter 这两周在看一本书 特征工程入门与实践 对自己很有启发 特征工程是数据工作者建模过程中极其重要的一步 如何从众多的特征中找到或者选择与目标具有高强相关的特征显得尤为重要
  • 电脑提示concrt140.dll丢失的怎么解决

    电脑提示concrt140 dll丢失 会导致很多软件跟游戏无法打开运行 concrt140 dll是Windows系统中重要组件 小编今天就把concrt140 dll丢失的解决方法分享给大家 修复方法如下 首先是打开电脑的浏览器后在顶部
  • 狂神说Elastic search学习笔记

    狂神Elastic search笔记 简介 安装 es安装 安装可视化界面 下载kibana es核心概念理解 分片 倒排索引 ik分词器插件 安装 rest风格操作 关于文档的基本操作 重点 添加数据 获取数据 更新数据 如果参数少了会置