1、什么是搜索?

搜索,就是在任何场景下,找寻你想要的信息,这个时候会输入一段你要搜索的关键字,然后就期望找到这个关键字的有些信息


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

(1)如检索的文本太长,效率会很低

(2)不能将搜索词拆分出来


3、什么是全文检索和Lucene?

(1)全文检索,搜索词拆分和倒排索引

(2)lucence,jar包,里面封装了各种建立倒排索引,以及进行搜索的代码,包括各种算法。


4、什么是Elasticsearch?

(1)lucence是单机部署,ES自动维护数据分布到多节点的索引建立,还有搜索请求分布到多个节点的执行

(2)自动维护数据的冗余副本

(3)ES是分布式、高性能、高可用、可伸缩的搜索和分析系统



5、Elasticsearch的功能?

(1)分布式的搜索引擎和数据分析引擎

   搜索:网站的站内搜索,IT系统的检索

   数据分析:新闻网站,最近1个月访问量排名前3的新闻版块是哪些?

(2)全文检索、结构化检索、数据分析

   全文检索:select * from products where product_name like '%手机%'

   结构化检索:select * from products where category_id like='日化用品'

   数据分析:select count(*) from products  group by category_id

   部分匹配、自动完成、搜索纠错、搜索推荐

(3)对海量数据进行近实时的处理

   近实时:在秒级别对数据进行搜索和分析,反之离线批处理

   分布式,自动可以将海量数据分散到多台服务器存储和检索



6、Elasticsearch的使用场景

(1)维基百科,全文检索,高亮,搜索推荐

(2)The Guardian,用户行为日志+社交网络数据,对每篇新闻做数据分析

(3)Stack Overflow,全文检索,搜索相关问题和答案

(4)github,搜索上千亿行代码

(5)电商网站,检索商品

(6)日志数据分析,logstash采集日志,ES进行复杂的数据分析和挖掘,kibana进行可视化

(7)商品价格监控网站,用户设定某商品的价格阈值,发送通知

(8)BI系统

(9)站内搜索(电商、招聘、门户等等),IT系统搜索(OA,CRM,ERP),数据分析


7、Elasticsearch的特点

(1)可以作为一个大型分布式集群技术,处理PB级数据

(2)将全文检索、数据分析和分布式技术合并在一起,形成了ES

(3)对用户而言,即开箱即用,非常简单,中小型应用,直接3分钟部署

(4)ES提供了数据库不能提供的很多功能,比如全文检索、同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理



8、Lucene和Elasticsearch的前世今生

(1)lucence是功能强大的搜索库,直接基于Lucene开发,api复杂,需要深入理解各种索引结构

(2)ES基于Lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口、其他语言的接口



9、Elasticsearch的核心概念

(1)near realTime:近实时,从写入数据到可以被搜索到,有1s的延时,es搜索和分析可以达到秒级

(2)Cluster 集群

(3)Node,节点

(4)document&field,文档,json数据结构,一个document里面有多个field

(5)Index,索引,一个index包含多个document,一个index包含类似的document

(6)type:类型,每个index都有1个或多个type,type是index中的一个逻辑数据分类

    商品index,里面存放了所有商品数据,商品document

       日化商品type:product_id,product_name,

   电器商品type:product_id,product_name,service_period

   生鲜商品type:product_id,product_name,eat_period

    每一个type里面,都会包含一堆document


(7)shared,index会被拆分为多个shared,每个shared存放index的一部分,散落在多台服务器

     横向扩展

分布式执行

(8)replica,每个shared可以指定一个或多个shared,多个replica可以提升搜索操作的性能

    primary shared,建立索引时一次设置,不能修改,默认为5个

    replica,默认是1个,随时修改

默认每个索引10个share,最小的高可用配置是2台服务器,primary 和replica的shared不能放在同一服务器上


10、Elasticsearch的核心概念 vs. 数据库核心概念

Elasticsearch    数据库

Document         行

Type                  表

Index                库