IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> elasticSearch入门 -> 正文阅读

[大数据]elasticSearch入门

elasticSearch介绍

1. 简介

elasticSearch是一款基于Apache Lucene构建的开源搜索引擎,采用java编写并使用Lucene构建索引、提供搜索功能,ElasticSearch的目标是让全文搜索变得简单,开发者可以通过他简单明了的RestFul API轻松的实现搜索功能,而不必去面对Lucene的复杂性。ES能够轻松的进行大规模的横向扩展,以支撑PB级的结构化和非结构化海量数据的处理。

一言蔽之:ElasticSearch是一款基于Lucene的实时分布式搜索和分析引擎。

elasticSearch设计主要用于云计算中,能够达到实时搜索、稳定、可靠、快速,安装使用也很方便。

国内官网:开源搜索:Elasticsearch、ELK Stack 和 Kibana 的开发者 | Elastic

2. 工作原理

在这里插入图片描述

3. 适用场景

3.1 使用场景概述

  • 站内搜索:主要和Solr竞争,属于后起之秀
  • NoSQL json文档数据库:主要抢占Mongo的市场,他在读写性能上优于Mongo,同时也支持地理位置查询,还方便地理位置和文本混合查询。
  • 监控:统计、日志类事件序的数据存储和分析、可视化、这方面是引领者。
  • 国外:Wikipedia(维基百科)使用ES提供全文搜索并高亮关键字、StackOverflow(IT问答网站)结合全文搜索与地理位置查询、GitHub使用ElasticSearch检索1300亿行的代码
  • 国内:百度(在云分析、网盟、预测、文库、钱包、风控等业务上都应用了ES,单集群每天导入30TB+数据,总共每天60TB+)、新浪、阿里巴巴、腾讯等公司均有使用ES。
  • 使用比较广泛的平台ELK(ElasticSearch、Logstash、Kibana)

3.2 使用场景详解

  • 使用elasticSearch作为主要的后端

  • 在现有系统中增加elasticSearch

  • 使用elasticSearch和现有的工具

    • rsyslog、Logstash、Apache Flume日志记录工具
    • 搜索和可视化界面分析工具:Kibana

在这里插入图片描述

4. 与MySQL对比

MySQLES
database数据库index索引库
table表type类型
row行,记录document文档
column列filed字段

这里Types的概念已经逐渐弱化,在ES6.X中,一个index包含一个type,在ES7.X中,type的概念已经被删除了。

5. REST

5.1 REST简介

REST全称Representational State Transfer。是一种软件的架构风格,而不是标准,只是提供了一组设计原则换约束条件。它主要用户客户端和服务端交互类的软件。基于这个风格设计的软件可以更简洁、更有层次、更易于实现缓存等机制。

  • REST操作:
    • GET: 获取对象的当前状态
    • PUT: 改变对象的状态
    • POST: 创建对象
    • DELETE: 删除对象
    • HEAD: 获取头信息

5.2 示例

传统的请求:http://localhost/login?username=hjx&userpass=123

rest风格:http://localhost/login/hjx/123

5.3 ES内置REST的url

URL描述
/index/search搜索指定索引下的数据
/aliases获取或搜索索引的别名
/index/查看指定索引的详细信息
/index/type/创建或操作类型
/index/_mapping创建或操作mapping
/index/_setting创建或操作设置(number_of_shards是不可更改的)
/index/_open打开指定被关闭的索引
/index/_close关闭指定索引
/index/_refresh刷新索引(使新加内容对索引可见,不保证数据被写入磁盘)
/index/flush刷新索引(会触发Lucene提交)

6. ES的下载安装

7. ES基础操作

7.1 基础操作

  • 创建名为shopping的索引

    • PUT http://localhost:9200/shopping
  • 获取索引信息

    • GET http://localhost:9200/shopping
  • 获取索引的索引

    • GET http://localhost:9200/cat/indices?v
  • 删除索引

    • DELETE http://localhost:9200/shopping
  • 插入文档数据

    • POST http://localhost:9200/shopping/doc
    • Body用JSON格式
      • {
        “titlt”:“小米手机”,
        “category”:“小米”,
        “images”:“http://www.gulixueyuan.com/xm.jpg”,
        “price”:3999.00
        }
    • 自定义ID
      • POST http://localhost:9200/shopping/doc/1001
  • 根据主键数据

    • GET http://localhost:9200/shopping/doc/1001
  • 查询所有数据

    • GET http://localhost:9200/shopping/_search
  • 更新数据,全量覆盖

    • PUT http://localhost:9200/shopping/doc
    • Body用JSON格式
      • {
        “titlt”:“小米手机”,
        “category”:“小米”,
        “images”:“http://www.gulixueyuan.com/xm.jpg”,
        “price”:5999.00
        }
  • 更新数据,局部更新

    • POST http://localhost:9200/shopping/doc

    • Body用JSON格式

      • {
        “doc”:{

        ? “titlt”:“华为手机”

        ? }
        }

  • 条件查询

    • GET http://localhost:9200/shopping/_search?q=category:小米

    • GET http://localhost:9200/shopping/_search

      • Body用JSON格式

        • {
          “query”:{

          ? “match” : {

          ? “category”:“小米”

          ? }

          ? }
          }

  • 分页查询

    • GET http://localhost:9200/shopping/_search

      • Body用JSON格式

        • {
          “query”:{

          ? “match_all” : {

          ? }

          ? },

          ? “from” : 0,

          ? “size” : 2

          }

  • 多条件查询

    • GET http://localhost:9200/shopping/_search

      • Body用JSON格式

        • {
          “query”:{

          ? “bool” : {

          ? “must” : [

          ? “match” : {

          ? “category”:“小米”

          ? },

          ? “match” : {

          ? “price”:1999.00

          ? },

          ? ]

          ? }

          ? }

          }

        • {
          “query”:{

          ? “bool” : {

          ? “should” : [

          ? “match” : {

          ? “category”:“小米”

          ? },

          ? “match” : {

          ? “category”:“华为”

          ? },

          ? ]

          ? }

          ? }

          }

  • 全文查询

    • GET http://localhost:9200/shopping/_search

      • Body用JSON格式

        • {
          “query”:{

          ? “match” : {

          ? “category”:“小华”

          ? }

          ? }
          }

    • 保存文档数据时,会将文档数据分词保存到倒排索引中,这样使用文字的一部分也可以查询到数据

  • 完全匹配

    • GET http://localhost:9200/shopping/_search

      • Body用JSON格式

        • {
          “query”:{

          ? “match_phrase” : {

          ? “category”:“小华”

          ? }

          ? }
          }

  • 高亮查询

    • GET http://localhost:9200/shopping/_search

      • Body用JSON格式

        • {
          “query”:{

          ? “match_phrase” : {

          ? “category”:“小华”

          ? }

          ? },

          ? “highlight” : {

          ? “fileds” : {

          ? “category”: {}

          ? }

          ? }

          }

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:07:06  更:2021-08-13 12:07:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 8:50:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码