• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

28、Elasticsearch入门

武飞扬头像
无休止符
帮助1

一、ES简介

1 - es简介

  • mysql面临的问题
    • 性能低下:数据量或者并发比较大的情况下,like的效率低下
    • 没有相关性排名:我们使用搜索引擎搜索的时候,希望关联度比较高的搜索在前面展示
    • 无法全文搜索
    • 搜索不准确 —— 没有分词
  • 什么是全文搜索
    • 我们生活中的数据总体分为两种:结构化数据和非结构化数据
      • 结构化数据:具有固定格式或有限长度的数据,如数据库、元数据等
      • 非结构化数据:指不定长或无固定格式的数据,如邮件、word文档等
  • 什么是ES:ES是一个分布式可扩展的实时搜索和分析引擎,一个简历在全文搜索引擎Apache Lucene(TM)基础上的搜索引擎;当然ES并不仅仅是Lucene那么简单,它不仅包括了全文搜索功能,还可以进行以下工作
    • ①.分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索
    • ②.实时分析的分布式搜索引擎
    • ③.可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据
  • ES适用场景
    • 电商网站、检索商品
    • 日志数据分析、logstash采集日志、ES进行复杂的数据分析(ELK)
    • 商品价格监控网站、用户设定价格阀值
    • BI系统、商业智能、ES执行数据分析和挖掘

2 - es中的type、index、mapping、dsl

mysql Elasticsearch
database ——
table index(7.x开始理解为table)、(7.x开始type为固定值_doc)
row document
column field
schema mapping
sql DSL(Descriptor Structure Language)
  • 索引:index。es将它的数据存储到一个或者多个索引(index)中,索引就像数据库,可以向索引写入文档或者从索引中读取文档
    • 在es索引有2个概念:动词(insert)、名词(表)
      • 动词:es中描述添加数据 -> 索引一个数据
      • 名词:es中描述一个数据在一个表中 -> 一个数据在一个索引中

3 - es的本质

学新通


二、安装ES和kibana


三、ES创建添加数据

1 - 新建数据

  • put id新建数据:account是index;_doc是固定写法;1是id
    • put必须添加id,否则会报错
    • account不存在也会帮我们新建
    • account嵌套了company
PUT account/_doc/1
{
  "name":"bobby",
  "age":18,
  "company":[
    {
      "name":"imooc",
      "address":"beijing"
    },
    {
      "name":"immoc2",
      "address":"shanghai"
    }
  ]
}

学新通

  • put id新建数据返回:_shards分布式中的分片;_seq_no乐观锁;
{
  "_index" : "account",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

  • put如果id数据存在则为update,否则为create:updated状态码200,created状态码201
    学新通
  • 查看新建的index
    学新通
  • post不带id新建数据
post user/_doc/
{
  "name":"bobby",
  "company":"imooc"
}

学新通

  • 如果post带id就和put的操作是一样的了:只是put不允许带id
    学新通
  • post _create:有就新建没有报错
POST user/_create/1
{
  "name":"bobby",
  "company":"imooc"
}

学新通

2 - 查看索引

  • 查看所有索引GET _cat/indices
    学新通
  • 查看具体索引GET account
    学新通

3 - post的坑

  • post的updated会删除掉之前的数据:put也是一样的
    学新通
    学新通
    学新通
  • 如何向已有数据添加数据?:带上_update,并且将新数据包裹在doc中
    学新通
  • 使用_update和_doc这种方式是会检查的:可以发现无论怎么执行_version和_seq_no都是不会改变的
    学新通

四、ES获取数据

1 - 数据获取

  • 获取数据GET user/_doc/1
    学新通
  • 获取特定的数据GET user/_source/1
    学新通

2 - 通过url搜索数据

  • 查询所有indexGET _search?q=bobby
    学新通
  • 查询指定索引数据GET user/_search?q=bobby
    学新通

3 - 通过request body查询数据(重点)

  • 查询所有数据
GET user/_search
{
  "query": {
    "match_all": {}
  }
}

学新通


五、删除数据

  • 删除数据DELETE user/_doc/2
    学新通
  • 删除后再查询:_found为false,并且状态为404

学新通

  • 删除索引DELETE user
    学新通
    学新通

六、批量插入和批量查询

1 - POST _bulk

  • POST _bulk
POST _bulk
{"index":{"_index":"user","_id":"1"}}
{"name":"bobby"}
{"index":{"_index":"user","_id":"2"}}
{"name":"bobby2"}

学新通

  • 操作是独立的:批量操作,每个操作都是独立的,即使失败了也不会影响其他操作
    学新通
  • 操作是可以混合的:不要求各操作必须一样
    学新通

2 - 导入官方数据测试

3 - GET _mget

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbggjf
系列文章
更多 icon
同类精品
更多 icon
继续加载