基于Lucene(是一个非常高效的全文检索引擎框架)
    使用场景:大数据搜索,全文检索,聚合计算
    特点:近实时搜索

    全文检索工具对比?
    lucenen:
    solr:适用于传统搜索应用,es适用于互联网应用,实时搜索更强

    核心概念:
    索引index:关系型数据库中的databse
    类型type:Table
    文档document:row
    字段field:text\keyword\byte:列
    映射Mapping:Schema
    查询方式DSL:类似于SQL,(新版本也支持sql)
    分片sharding和副本replicas:分片将数据水平划分,副本达到高可用

    原理:
    分词做索引
    倒排索引原理:
    分词——》去重——》排序
    正排索引根据ID找内容,倒排索引根据内存找ID

    如何进行中文分词?有哪些分词器?
    内置了一些分词器,只对中文进行分词
    IK分词器:内置词库,并可以自己维护

    数据写入的内部流程?
    1、客户端往服务器写数据时,可以连接任一节点,该集群节点就作为一个协调节点
    2、hash计算该数据存入哪个sharding
    3、协调节点进行路由,将请求转发给对应的主sharding所在的服务器节点
    4、目标sharding处理请求,写入数据到索引库,并且将数据同步到replica sharding中
    5、返回响应

    搜索原理?
    1、协调节点接收到请求
    2、将查询请求广播到所有数据节点,各自执行查询逻辑
    3、各个数据节点进行查询之后,将符合条件的数据放到一个队列中,并把数据的文档ID、节点信息、分片信息都返回给协调节点
    4、协调节点将所有的结果进行汇总、排序
    5、 协调节点向查到结果的分片发送get请求,对应的分片将文档数据发送给协调节点,协调节点将数据整合发送给客户端