当前位置: 首页 > news >正文

elasticsearch之我不会的

elasticsearch之我不会的

如何安装,在此不谈,开门见山

1.概念理解

Relational DBelasticsearch说明
表tableindex索引(index),就是文档的集合,类似数据库的表(table)
行rows文档documents文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式
字段columnsfields字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)
SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)
SQLDSLDSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD

正向索引(mysql)

根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程

  • 优点:
    • 可以给多个字段创建索引
    • 根据索引字段搜索、排序速度非常快
  • 缺点:
    • 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。
      在这里插入图片描述

倒排索引

是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程

  • 优点:
    • 根据词条搜索、模糊搜索时,速度非常快
  • 缺点:
    • 只能给词条创建索引,而不是字段
    • 无法根据字段做排序
      在这里插入图片描述

2.场景

2.1 场景

  • 对安全性要求较高的写操作,使用mysql实现
  • 对查询性能要求较高的搜索需求,使用elasticsearch实现
  • 两者再基于某种方式,实现数据的同步,保证一致性
    在这里插入图片描述

2.2 同步

2.3.1 同步调用

在这里插入图片描述

2.3.2 异步通知

在这里插入图片描述

2.3.3 监听binlog

在这里插入图片描述

3.索引库操作

3.1 mapping映射属性

mapping是对索引库中文档的约束,常见的mapping属性包括:

  • type:字段数据类型,常见的简单类型有:
    • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
    • 数值:long、integer、short、byte、double、float、
    • 布尔:boolean
    • 日期:date
    • 对象:object
  • index:是否创建索引,默认为true
  • analyzer:使用哪种分词器
  • properties:该字段的子字段

例如:

{"age": 21,"weight": 52.1,"isMarried": false,"info": "黑马程序员Java讲师","email": "zy@itcast.cn","score": [99.1, 99.5, 98.9],"name": {"firstName": "云","lastName": "赵"}
}

对应的每个字段映射(mapping):

判断: 类型为?参不参与搜索?需不需要分词?选择分词器?

  • age:类型为 integer;参与搜索,因此需要index为true;无需分词器
  • weight:类型为float;参与搜索,因此需要index为true;无需分词器
  • isMarried:类型为boolean;参与搜索,因此需要index为true;无需分词器
  • info:类型为字符串,需要分词,因此是text;参与搜索,因此需要index为true;分词器可以用ik_smart
  • email:类型为字符串,但是不需要分词,因此是keyword;不参与搜索,因此需要index为false;无需分词器
  • score:虽然是数组,但是我们只看元素的类型,类型为float;参与搜索,因此需要index为true;无需分词器
  • name:类型为object,需要定义多个子属性
    • name.firstName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器
    • name.lastName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker 部署 net6 webapi项目
  • 【ElasticSearch】基本命令
  • 【功能自动化】自动识别测试用例
  • zdppy+vue3+onlyoffice文档管理系统实战 20240829上课笔记 Python验证码框架完成
  • Python统计FreeMind测试用例数量
  • C语言阴阳迷宫
  • SparkShop开源商城 uploadFile 任意文件上传漏洞复现
  • LabVIEW项目中硬件选型与长期需求沟通
  • OSI七层模型中的数据链路层
  • 图像数据处理25
  • MySQL数据库用户管理和授权
  • 突发性网络攻击的安全挑战分析
  • 微软DP420认证,涉及SQL,C#,Java
  • Apache Kafka 简介、使用场景及特点
  • day-43 盛最多水的容器
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【5+】跨webview多页面 触发事件(二)
  • angular2 简述
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • eclipse的离线汉化
  • es6要点
  • HTTP那些事
  • in typeof instanceof ===这些运算符有什么作用
  • javascript面向对象之创建对象
  • java概述
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • LeetCode算法系列_0891_子序列宽度之和
  • python学习笔记-类对象的信息
  • scrapy学习之路4(itemloder的使用)
  • SOFAMosn配置模型
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring声明式事务管理之一:五大属性分析
  • Vue 2.3、2.4 知识点小结
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 悄悄地说一个bug
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 追踪解析 FutureTask 源码
  • 关于Android全面屏虚拟导航栏的适配总结
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • $.ajax()方法详解
  • (3)llvm ir转换过程
  • (Git) gitignore基础使用
  • (Python第六天)文件处理
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二)c52学习之旅-简单了解单片机
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)计算机毕业设计高校学生选课系统
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (一) storm的集群安装与配置
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包