2021-02-13 大数据课程笔记 day24

时间煮雨
@R星校长

Lucene 与 ElasticSearch 概述

Lucene 全文检索

Lucene 概述

Lucene 是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/ 或者 google Desktop 那么拿来就能用,它只是提供了一种工具让你能实现这些产品。

  1. lucene 能做什么 :
    本质就是给搜索内容定位
    要回答这个问题,先要了解lucene的本质。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你要搜索的关键词出现在哪里。知道了这个本质,你就可以发挥想象做任何符合这个条件的事情了。你可以把站内新闻都索引了,做个资料库;你可以把一个数据库表的若干个字段索引起来,那就不用再担心因为 “%like%” 而锁表了;你也可以写个自己的搜索引擎……
  2. 你该不该选择 lucene
    下面给出一些测试数据,如果你觉得可以接受,那么可以选择。
    测试一:250万 记录,300M 左右文本,生成索引 380M 左右,800 线程下平均处理时间300ms。
    测试二:37000 记录,索引数据库中的两个 varchar 字段,索引文件2.6M,800线程下平均处理时间 1.5ms。
倒排索引

正排索引
我是中国人(1)
中国是全球人口最多的国家,中国人也最多(2)
1: 我 , 是, 中国,中国人
2: 中国,是,全球….
倒排索引
1,我 (1:1){0}#第1行出现1次,在第一行中偏移量0
2,中国 (1:1) {2},(2:2){0,13}#第1行出现1次,偏移量2;第2行出现2次,偏移量0和13
文章数量和索引数量之间的关系?没关系!

document:java instance

ElasticSearch 概述

简介

漫画学 ElasticSearch
https://zhuanlan.zhihu.com/p/62892586

ElasticSearch 是一个基于 Lucene 的实时的分布式搜索和分析引擎。设计用于云计算中,能够达到近实时搜索,稳定,可靠,快速,安装使用方便。基于 RESTful 接口。
	199x年的时候,搜索引擎很流行:yahoo/谷歌/百度。。。
道格·卡廷  Lucene 是一堆jar包,用于构建搜索引擎
		nutch爬虫
		solr 基于Lucene做的web项目,搜索引擎。
		数据存储:HDFS
		数据的随机存储:HBase
		数据计算:MapReduce

普通请求是...get?a=1   GET|POST
rest请求....get/a/1     GET|POST|PUT|DELETE
Elasticsearch的用户
        GitHub,Wikipedia,ebay等...
ELK
elasticsearch+logstash+kibana

https://www.elastic.co/cn/

ES 与 solr 的对比:在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

ElasticSearch vs Solr 总结

  1. es 基本是开箱即用,非常简单。Solr 安装比较复杂
  2. Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。
  3. Solr 支持数据格式:JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。
  4. Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要 kibana 友好支撑。
  5. Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;ES 建立索引快(即查询慢),即实时性查询快,用于 facebook、GitHub、新浪等搜索。
  6. Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的大数据实时搜索应用。
ES与关系型数据对比
ES优点:

a) 分布式:ES 的自动发现机制会识别新增的节点并重新平衡分配数据。
b) 全文检索:ES 后台使用 Lucene 提供全文检索,自带多语言支持、强大的查询语言、地理位置支持、上下文感知的建议、自动完成和搜索片段
c) 近实时搜索和分析:数据从进入 ES 到能够搜索到是近实时的。除了搜索,ES 也可以进行聚合分析操作。
d) 高可用:ES 会自动发现新的或失败的节点,重组和重新平衡数据,确保数据是安全的和可访问的。
e) 模式自由:ES 的动态 Mapping 机制可以自动检测数据的结构和类型,创建索引,并使数据可搜索。
f) RESTful API:几乎任何操作都可以使用一个简单的 RESTful API,JSON 基于 HTTP 请求来实现,客户端也可以使用多种编程语言。

应用场景

a) 站内搜索:Facebook、新浪微博、论坛等的站内搜索
b) NoSQL 数据库:ES 读写性能优于 MongoDB,同时也支持地理位置查询
c) 日志分析:日志分析由实时日志分析平台 ELK 完成,能够对日志进行集中的收集、存储、搜索、分析、监控以及可视化。

环境安装与启动

注: Elasticsearch Kibana 的下载地址统一为
https://www.elastic.co/downloads/
问题排查可以登录https://discuss.elastic.co/c论坛查找相关信息

准备工作

  1. 环境准备
    需要服务器 3 台:node2,node3,node4
    切换快照到:JDK1.8、Zookeeper 安装、以及免密登录后的快照。
  2. 用户准备(三台机器上都要操作)
    只允许普通用户操作,不允许 root 用户
    注意:因为elasticsearch有远程执行脚本的功能所以容易中木马病毒,所以不允许用root用户启动,root用户是起不来的,赋权限,用一般的用户启动
    要配置network.host才能别的机器或者网卡访问,否则只能是127.0.0.1或者localhost访问,这里配置成自己的局域网ip
    注意配置yml结尾的配置文件都需要冒号后面加空格才行

创建esuser用户:

useradd esuser

设置密码

passwd esuser

让 esuser 拥有 sudo 的权限,需要修改 /etc/sudoers 文件
需要先给 /etc/sudoers 添加写的权限

[root@node2 ~]# ll /etc/sudoers
-r--r-----. 1 root root 4002 Mar  2  2012 /etc/sudoers
[root@node2 ~]# chmod u+w /etc/sudoers
[root@node2 ~]# vim /etc/sudoers
root    ALL=(ALL)       ALL
esuser  ALL=(ALL)       ALL
[root@node2 ~]# chmod u-w /etc/sudoers #改完之后将写权限删除
[root@node2 ~]# scp /etc/sudoers node3:/etc/
sudoers                                                               100% 4024     3.9KB/s   00:00    
[root@node2 ~]# scp /etc/sudoers node4:/etc/
sudoers                                                               100% 4024     3.9KB/s   00:00 
  1. 在 /opt 下创建目录 es,将 es 的所有权切换给 esuser
    三台服务器上操作
[root@node2 ~]# su esuser
[esuser@node2 root]$ ll /root
ls: cannot open directory /root: Permission denied
[esuser@node2 root]$ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值