你用过Elasticsearch么?那你知道Elasticsearch底层是基于什么技术演化而来的么?相信用过ES并深刻了解过ES的都知道,ES是基于Lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口、其余语言的接口。如今Lucene从诞生到如今已经20年了,Happy Birthday , Lucene!ES官网还特地为Lucene庆生,连接:https://www.elastic.co/cn/cel... 。html
关于elasticsearch的一个传说,有一个程序员失业了,陪着本身老婆去英国伦敦学习厨师课程。程序员在失业期间想给老婆写一个菜谱搜索引擎,以为lucene实在太复杂了,就开发了一个封装了lucene的开源项目,compass。后来程序员找到了工做,是作分布式的高性能项目的,以为compass不够,就写了elasticsearch,让lucene变成分布式的系统。 今天咱们乘着Lucene的20岁生日一块儿温习一下Lucene和ES的核心概念。java
lucene中最重要的的类之一,它主要是用来将文档加入索引,同时控制索引过程当中的一些参数使用。程序员
分析器,主要用于分析搜索引擎遇到的各类文本。经常使用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器等。数据库
索引存放的位置;lucene提供了两种索引存放的位置,一种是磁盘,一种是内存。通常状况将索引放在磁盘上;相应地lucene提供了FSDirectory和RAMDirectory两个类。api
文档;Document至关于一个要进行索引的单元,任何能够想要被索引的文件都必须转化为Document对象才能进行索引。服务器
相似于数据库中的一个字段,存储了key-value值。restful
是lucene中最基本的检索工具,全部的检索都会用到IndexSearcher工具;数据结构
Query相似关系型数据库中的SQL语句。与关系型数据库相似,Lucene提供了如下的基本查询:精确查询xxx = ? TermQuery、范围查询 xxx BETWEEN? AND ? PointRangeQuery、模糊查询 xxx LIKE ‘%?%’ PrefixQuery、RegexpQuery、组合查询 (…) AND (…) OR (…) BooleanQueryapp
是一个解析用户输入的工具,能够经过扫描用户输入的字符串,生成Query对象。运维
在搜索完成以后,须要把搜索结果返回并显示给用户,只有这样才算是完成搜索的目的。在Lucene中,搜索的结果的集合是用Hits类的实例来表示的。
https://www.elastic.co/guide/...
类型,每一个索引里均可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,好比博客系统,有一个索引,能够定义用户数据type,博客数据type,评论数据type。
本文由博客一文多发平台 OpenWrite 发布!