01.ElasticSearch

1.0 ElasticSearch


海量数据的

传输: flume kafka

储存:MySQL hdfs hbase ElasticSearch

计算:mr hive spark

工具:Azkaban


1.1 什么是搜索?

log

百度!=搜索

  • 搜索,就是在任何场景下,找寻你想要的信息.

1.2 如果用数据库做搜索会怎么样?

  • 没有办法实现输错的时候搜索–> %生化机%

1.3 什么是全文检索和Lucene?

  • 全文检索:直接拿搜索的内容去比对

  • Lucene:切词–>倒排索引(支持分词)

  • Lucene就是一个jar包,帮助我们进行倒排索引 (只能做英文的分词)

1.3.1 B+ Tree

  • 基于二分查找法

  • 对索引建立索引:建立的是B+Tree的索引

1.3.2 Lucene倒排索引结构

重点

在这里插入图片描述

  • Term Index是缓存到内存的,提高检索的速率

1.4 什么是ElasticSearch

  • ES是一个实时分布式搜索和分析引擎(简单的).它用于全文搜索 结构化搜索,分析.

  • 考虑到分词查询就要需要用ES

1.5 ElasticSearch的适用场景

各大网站搜索

1.6 ElasticSearch的特点

  1. 天然分片(避免热点问题),天然集群(有副本)
  2. ES不是新技术
  3. 使用简单
  4. ES是对MySQL搜索功能补充

前面的都是了解一下

接下来的是重点


1.7 ElasticSearch的核心概念(重点)

  • 近实时

  • Cluster(集群)

  • Node(节点)

  • Index(索引-数据库)

    • 相当于MySQL的database–>分类
  • Type(类型-表)

    • 相当于database的table
    • 但是6.0以及之后的版本,只能有一个type,一般用_doc代替了
    • 7.0以后就没有了,但是市面上一般用到6版本
  • **Document(文档-行) **

    • 用json数据结构表表示

    • MySQL底层用csv来存储

  • Field(字段-列)

    • 两者没有严格的包含和被包含
  • Mapping(映射-约束)

    • 用来规定document的字段等
  • ES与数据库的类比

    • 在这里插入图片描述
  • ES存入数据和和搜索数据机制

    • 特别注意一下Docid

2.0 ElasticSearch快速入门

3.0 ElasticSearch使用(重点)

3.1 数据类型

  • 核心数据类型
    • 字符串类型:text(分词) keyword(不可以分词)
    • 数值型:long integer short byte double float
    • 日期类型:date
    • 布尔类型:Boolean
  • 复杂数据类型
    • 只认java的数组array list
  • 地理位置数据类型
  • 专用类型

3.2 Mapping

# 查看所有节点信息

#手动创建Mapping
PUT stu
{
	"mappiing":{
	"_doc":{
		"properties":{
		"id":{
		"type":"keyword"
		},
		"name":{
		"type":"text"
		},
		"sex":{
		"type":"integer"
		},
		"birth":{
		"type":"date"
		}
		}	
		}
	}

}
#插入数据
PUT stu/_doc/1001
{
"id":"001",
"name":"张丽芳",
"sex":0,
"birth":"1995-01-01"
}
#查询数据
GET stu/_search
#自动创建mapping,直接向不存在的index中插入数据即可
PUT stu1/_doc/1001
{
    "id":"002",
    "name":"lisi",
    "sex":"male",
    "birth":"2020-02-02"
}
#查看mapping信息 (6.0版本可以直接使用)
GET stu1/_mapping
#查看keyword类型分词结果(不支持分词)
GET _analyze
{
    "keyword":"我是程序员"
}
#查看text类型分词结果
GET _analyze
{
    "text":"我是程序员"
}

3.3 IK分词器

  • 两个分词算法:ik_smart和ik_max_word:ik_smart为最少切分;ik_max_word为最细粒度(用的较多)

3.4 检索文档

重要

  • 全值匹配:把搜索的关键字当做整体来去索引比较–>和底层怎么切分没有关系,只会把整体拿去匹配
  • 分词匹配:会把搜索条件进行切分
  • 模糊匹配:模糊搜索
  • 聚合检索:可以写多个组,组也可以嵌套
  • 分页检索:分页显示,“from”:(page_num-1)* size, “size”:每页的大小

3.5 索引别名

  • 不停机切换索引

3.6 索引模板

  • 只要满足模板索引名称的就可以使用模板,不需要每天创建,还可以创建别名.

至少一次加上幂等性 来保证精准一次性


3.7 API操作

在这里插入图片描述

kafka消费的步骤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值