01 ELK——搜索引擎及Lucene基础

ELK:海量日志收集分析工具,分析内容例如PV、UV、峰值等,实际应用中例如分析用户的访问商品类型然后自动推送类似方面广告,由于要分析数以亿计的海量日志所以对于日志的收集、存储的数据结构、检索、查询就要进行特殊设计。
搜索引擎:大概可分为存储段和搜索组件例如关系型数据库的底层关系型模型存储机制和以这种模型设计的SQL引擎
日志收集:实际较大规模场景中甚至会有上百个节点,每秒产生的日志量巨大,为了减小网络IO压力可以在每个节点上安装一个agent负责监控日志文件,一旦有新的日志进入就进行采集。然后在存储和agent之间建立一个缓冲队列,设置可以承载的IO能力,每一段时间引流一次存下来并在本地完成索引构建。

查询流程:
在这里插入图片描述

Lucene:是apache软件基金会开放源代码的全文检索引擎工具包。但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,它能把获取的原始内容构建成文档并且能做文档分析和创建索引。但是并没有提供任何前端的可用搜索界面、并不能获取原始内容,只提供索引链这部分的功能。
ElasticSearch:是搜索引擎中的搜索组件部分

Lucene

Document:存储格式为文档格式,包含了一个或多个域的容器,搜索时是对value进行搜索;
	格式:field(域):value
域:在创建域的时候可以为域指定多个选项来控制Lucene在将文档添加进域索引后,对该域可以执行哪些操作:如索引选项、存储选项、域向量使用选项;
	索引选项:用于通过倒排索引来控制文本是否可被搜索:
		Index:ANYLYZED:分析(切词)并单独作为索引项;
		Index.Not_ANYLYZED:不分析(不切词),把整个内容当一个索引项;
		Index.ANYLYZED_NORMS:类似于Index:ANALYZED,但不存储token的Norms(加权基准)信息;
		Index.Not_ANYLYZED_NORMS:类似于Index:Not_ANALYZED,但不存储值的Norms(加权基准)信息;
		Index.NO: 不对此域的值进行索引;因此不能被搜索;			
	存储选项:是否需要存储域的真实值;
		store.YES:存储真实值
		store.NO:不存储真实值
	域向量选项用于在搜索期间该文档所有的唯一项都能完全从文档中检索时使用;
文档和域的加权操作:加权计算标准;
搜索:
	查询Lucene索引时,它返回的是一个有序的scoreDoc对象;查询时,Lucene会为每个文档计算出其评分;
	API:
		IndexSearcher:搜索索引入口;
		Query及其子类:build搜索
		QueryParser:搜索分析	
		TopDocs:分值排名前10
		ScoreDoc:返回

Lucene的多样化查询(IndexSearcher中的search方法);
	TermQuery:对索引中的特定项进行搜索;Term是索引中的最小索引片段,每个Term包含了一个域名和一个文本值;
	TermRangeQuery:在索引中的多个特定项中进行搜索,能搜索指定的多个域;
	NumericRangeQuery:做数值范围搜索;
	PrefixQuery:用于搜索以指定字符串开头的项;
	BooleanQuery:用于实现组合查询;组合逻辑有: AND, OR, NOT;
	PhraseQuery:根据位置信息定义距离范围进行搜索
	WildcardQuery:通配符查询
	FuzzyQuery:模糊查询;
		Levenshtein:定义模糊范围

猜你喜欢

转载自blog.csdn.net/weixin_43812198/article/details/129701454