• Elasticsearch


    目录

    1.Elasticsearch概述

    2.1 搜索是什么

    2.2 数据库做搜索弊端

    2.2.1站内搜索(垂直搜索):数据量小,简单搜索,可以使用数据库。

    2.2.2互联网搜索,肯定不会使用数据库搜索。数 据量太大。PB级。

     2.3 常见的搜索引擎

    2.4 Elasticsearch 是什么

    2.5 Elasticsearch的使用场景

    2.6  倒排索引

    3. ES的安装

    4.Windows安装Kibana

    ​编辑

     5. ES中常见的概念

    6. ES常用API接口

     6.1 基本操作

    6.1.1创建索引---数据库

    6.1.2删除所有---数据库

    6.1.3 查询有哪些索引

     6.1.4 查询索引的结构

    6.1.5 添加文档---记录

    6.1.6 查询文档---id查询

    6.1.7 删除文档---

    6.1.8 修改文档

    6.1.9 根据其他条件查询

     6.1.10 多条件查询

     6.1.11. 高亮显示


    1.Elasticsearch概述

    概念:用户输入想要的关键词,返回含有该关键词的所有信息。
    场景:
    1 互联网搜索:谷歌、百度、各种新闻首页
    2 站内搜索(垂直搜索):企业 OA 查询订单、人员、部门,电商网站内
    部搜索商品(淘宝、京东)场景。

    2.1 搜索是什么

    概念:用户输入想要的关键词,返回含有该关键词的所有信息。
    场景:
    1 互联网搜索:谷歌、百度、各种新闻首页
    2 站内搜索(垂直搜索):企业 OA 查询订单、人员、部门,电商网站内
    部搜索商品(淘宝、京东)场景。

    2.2 数据库做搜索弊端

    2.2.1站内搜索(垂直搜索):数据量小,简单搜索,可以使用数据库。

    问题出现:
    l 存储问题。电商网站商品上亿条时,涉及到单表数据过大必须拆分表,
    数据库磁盘占用过大必须分库( mycat )。
    l 性能问题:解决上面问题后,查询 笔记本电脑 等关键词时,上亿条数据
    的商品名字段逐行扫描,性能跟不上。
    l 不能分词。如搜索 笔记本电脑 ,只能搜索完全和关键词一样的数据,那
    么数据量小时,搜索 笔记电脑 电脑 数据要不要给用户。

    2.2.2互联网搜索,肯定不会使用数据库搜索。数 据量太大。PB级。

    我们可以使用搜索引擎来解决数据库搜索的问题 :
    搜索也是一款数据库,搜索可以进行分词搜索 --- 搜索速度非常快

     2.3 常见的搜索引擎

    ElasticSearch Solr 比较
    1. 当单纯的对已有数据进行搜索时, Solr 更快

     

    2. 当实时建立索引时, Solr 会产生 io 阻塞,查询性能较差,
    ElasticSearch 具有明显的优势

     

    3. 随着数据量的增加, Solr 的搜索效率会变得更低,而 ElasticSearch
    却没有明显的变化

     

      总结
      1 es 基本是开箱即用 ( 解压就可以用 !) 【南京】 , 非常简单。 Solr
    安装略微复杂一丢丢 !
      2 Solr 利用 Zookeeper 进行分布式管理 ,
    Elasticsearch 自身带有分布式协调管理功能
      3 Solr 支持更多格式的数据 , 比如 JSON XML CSV ,
    Elasticsearch 仅支持 json 文件格式。
      4 Solr 官方提供的功能更多 , Elasticsearch 本身更注重于核心
    功能,高级功能多有第三方插件提供,例如图形化界面需要 kibana
    好支撑
      5.Solr 查询快 , 但更新索引时慢 ( 即插入删除慢 ) ,用于电商等查询
    多的应用 ;
    6 ES 建立索引快 ( 即查询慢 ) ,即实时性查询快,用于 facebook 新浪等
    搜索。
     7 Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于
    新兴的实时搜索应用。
    8 Solr 比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,
    Elasticsearch 相对开发维护者较少 , 更新太快 , 学习使用成本较

    2.4 Elasticsearch 是什么

    The Elastic Stack, 包括 Elasticsearch 【搜索,分析】、 Kibana 【可视
    化】、 Beats Logstash 【数据的搜集】(也称为 ELK Stack )。能够安
    全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、
    分析和可视化。
    Elaticsearch ,简称为 ES ES 是一个 开源的高扩展的分布式全文搜索引
    , 是整个 ElasticStack 技术栈的核心。
    它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台
    服务器,处理 PB 级别的数据。

    2.5 Elasticsearch的使用场景

     

    国外:
    维基百科,类似百度百科, 网络七层协议 的维基百科,全文检索,高
    亮,搜索推荐
    Stack Overflflow (国外的程序讨论论坛),相当于程序员的贴吧。遇到
    it 问题去上面发帖,热心网友下面回帖解答。
    GitHub (开源代码管理),搜索上千亿行代码。
    电商网站,检索商品
    日志数据分析, logstash 采集日志, ES 进行复杂的数据分析( ELK
    术, elasticsearch+logstash+kibana
    商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时
    候,发送通知消息给用户,比如说订阅《 java 编程思想》的监控,如果
    价格低于 27 块钱,就通知我,我就去买。
    BI 系统,商业智能( Business Intelligence )。大型连锁超市,分析全
    国网点传回的数据,分析各个商品在什么季节的销售量最好、利润最
    高。成本管理,店面租金、员工工资、负债等信息进行分析。从而部署
    下一个阶段的战略目标。
    国内:
    百度搜索,第一次查询,使用 es
    OA ERP 系统站内搜索。
    es: 搜索的一款数据库,支持的数据格式 json.---->

    2.6  倒排索引

    倒排索引。数据存储时,经行分词建立 term 索引库。见画图

     分词表

     倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的

    每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记
    录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引
    (inverted index) 。带有倒排索引的文件我们称为倒排 索引文件 ,简称 倒排
    文件 (inverted fifile)

    3. ES的安装

    1 、安装 JDK ,至少 1.8.0_73 以上版本,验证:
    java -version
    2 、下载和解压缩 Elasticsearch 安装包,查看目
    录结构。
    https://www.elastic.co/cn/downloads/elasticsearch
    下载地址: https://www.elastic.co/cn/downloads/
    历史版本下载: https://www.elastic.co/cn/downloads/past-releases/

     

    解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务 。
    注意: 9300 端口为 Elasticsearch 集群间组件的通信端口, 9200 端口为
    浏览器访问的 http 协议 RESTful 端口。
    打开浏览器,输入地址: http://localhost:9200 ,测试返回结果,返回结
    果如下:
    { 4.Windows 安装 Kibana
    1 kibana es 数据的前端展现,数据分析时,可以方便地看到数据。作
    为开发人员,可以方便访问 es
    https://www.elastic.co/cn/downloads/
    历史版本下载: https://www.elastic.co/cn/downloads/past-releases/
    2 、下载,解压 kibana
    3 、启动 Kibana bin\kibana.bat
    4 、浏览器访问 http://localhost:5601 进入 Dev Tools 界面。像 plsql 一样支
    持代码提示。
    5 、发送 get 请求,查看集群状态 GET _cluster/health 。相当于浏览器访
    问。
    {
    "name" : "DESKTOP-LNJQ0VF",
    "cluster_name" : "elasticsearch",
    "cluster_uuid" : "nCZqBhfdT1-pw8Yas4QU9w",
    "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" :
    "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-
    beta1"
    },
    "tagline" : "You Know, for Search"
    }

    4.Windows安装Kibana

    1 kibana es 数据的前端展现,数据分析时,可以方便地看到数据。作
    为开发人员,可以方便访问 es
    https://www.elastic.co/cn/downloads/
    历史版本下载: https://www.elastic.co/cn/downloads/past-releases/
    2 、下载,解压 kibana
    3 、启动 Kibana bin\kibana.bat
    4 、浏览器访问 http://localhost:5601 进入 Dev Tools 界面。像 plsql 一样支
    持代码提示。
    5 、发送 get 请求,查看集群状态 GET _cluster/health 。相当于浏览器访
    问。

     5. ES中常见的概念

    Elasticsearch 面向文档型数据库 ,一条数据在这里就是一个文档。 为
    了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库
    MySQL 存储数据的概念进行一个类比
    ES 里的 Index 可以看做一个库,而 Types 相当于表, Documents 则相当
    于表的行。这里 Types 的概念已经被逐渐弱化, Elasticsearch 6.X 中,一
    index 下已经只能包含一个 type Elasticsearch 7.X , Type 的概念已
    经被删除了

    6. ES常用API接口

     6.1 基本操作

    6.1.1创建索引---数据库

    1. PUT /索引名称/类型名称/1
    2. {
    3. 数据
    4. }
    5. 创建索引并往索引中添加一条文档
    6. 1)创建索引---但是不添加数据。
    7. PUT /索引名/类型
    8. PUT /qy150
    9. {
    10. "mappings":{
    11. "properties": {
    12. "name":{
    13. "type": "text"
    14. },
    15. "age":{
    16. "type": "integer"
    17. }
    18. }
    19. }
    20. }

    6.1.2删除所有---数据库

    DELETE /索引名

     

    6.1.3 查询有哪些索引

    GET /_cat/indices?v

     6.1.4 查询索引的结构

     

    6.1.5 添加文档---记录

    1. # 必须指定id的值
    2. PUT /qy151/student/2
    3. {
    4. "name":"李四",
    5. "age":25
    6. }
    7. # 不指定id
    8. POST /qy151/student/
    9. {
    10. "name":"王五",
    11. "age": 32
    12. }

    6.1.6 查询文档---id查询

    查询的提交方式必须为GET

    GET /索引名称/类型名称/id值

     

    6.1.7 删除文档---

    提交方式DELETE提交方式

    根据不同的操作具有不同的提交方式restful风格

    GET 查询
    PUT 修改
    POST 添加操作
    DELETE 删除操作

    6.1.8 修改文档

    1. # 修改---这种修改必须要求指定所有列,如果只指定部分列,则原来其他列消失
    2. PUT /qy151/student/2
    3. {
    4. "name":"王五",
    5. "age":28
    6. }
    7. PUT /qy151/student/2
    8. {
    9. "name":"刘德华"
    10. }
    11. # 只修改部分列
    12. POST /qy151/student/1/_update
    13. {
    14. "doc":{
    15. "name":"刘德华",
    16. "age":22
    17. }
    18. }

    6.1.9 根据其他条件查询

    (1)查询所有文档

     (2)根据条件搜索

    GET /索引名称/类型名称/_search?q=字段名:值

     

    (3)查询的条件封装成json

     

    1. PUT /user/_doc/1 {
    2. "name":"刘民谐",
    3. "age": 18,
    4. "desc": ["有趣","幽默","开朗"]
    5. }
    6. PUT /user/_doc/2
    7. {
    8. "name":"马老师",
    9. "age": 18,
    10. "desc": ["严谨","冷漠"]
    11. }
    12. PUT /user/_doc/3
    13. {
    14. "name":"流油",
    15. "age": 3,
    16. "desc":["美丽","年轻","苗条"]
    17. }

     (4)只想查询部分列

     (5)分页查询

     

    (6)排序

     6.1.10 多条件查询

    must====等价于and

     should

     

     6.1.11. 高亮显示

     

  • 相关阅读:
    Error:KafkaStorageException打开的文件过多
    09架构管理之工作量评估评审
    jmeter+ant实现的接口自动化测试
    处理element ui 表格中 按钮 loading问题
    雷军称要做业余汽车博主;iPhone关机后仍在运行,或成恶意软件温床;奈飞宣布裁员150人|极客头条
    java 三元运算符
    Vue----计算属性
    前端vue异形轮播图案例(带源码)
    2.MySQL ---- 修改数据库的字符集(日常小技巧)
    ArcGIS加载的各类地图怎么去除服务署名水印
  • 原文地址:https://blog.csdn.net/qq_55682798/article/details/126347330