一线大厂面试真题——谈谈你对ES的理解

Elasticsearch,简称ES。它是建立在全文搜索引擎库Apache Lucene基础之上的一个开源的搜索引擎,也可以作为NoSQL数据库,存储任意格式的文档和数据。也可以做大数据的分析,是一个跨界开源产品。

它最主要的应用场景是ELK的日志分析系统。

另外它还有以下特点:

1.   第一、采用Master-slave架构,实现数据的分片和备份

2.   第二、使用Java编写,并对Lucene进行封装,隐藏了Lucene的复杂性

3.   第三、能胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据

4.   第四、ES提供Restful API,不仅简化了ES的操作,还支持任何语言的客户端提供API接口,另外Restful API的风格还现了CURD操作、创建索引,删除索引等功能。

ES的使用上有一些经验心得,比如:

1.   es面复杂的关联查询尽量别用,一旦用了性能都不太好。最好是先在Java系统里就完成关联,将关联好的数据直接写入ES中

2.   避免一些太复杂的操作,比如join/nested/parent-child搜索,不然容易出现性能问题。

3.   避免深分页查询,ES集群的分页查询支持from和size参数,查询的时候,每个分片必须构造一长度为from+size的优先队列,然后回传到网关节点,网关节点再对这些优先队列进行排序找到正确的size文档。当from足够大的时候,就算不发生OOM,也会影响到CPU和带宽等,从而影响到整个集群的性能。

你可能感兴趣的:(Spring,Cloud生态必问面试题,面试,elasticsearch,职场和发展,rpc,开发语言,大数据,搜索引擎)