背景
最近项目中需要做一些大数据的全文检索功能,以前项目中都是基于 Lucene 进行的开发。而随着互联网技术架构的发展,近几年搜索引擎技术发展迅速,其中ElasticSearch进行技术的预演。 的热度一直都在搜索引擎排在前面,它的实时搜索、稳定、分布式、REST API 封装都是它的特点。结合网上其他资料对比,这个项目也打算使用 ElasticSearch 进行技术的预演。
预演步骤
既然技术选型已经确定,接下来就是围绕这个目标进行一步一步的任务细化。而且因为时间线不能拉太长,所以目前是先能够和业务集成,对应一些底层的集群、分片等原理性的内容,放到最后再去深入了解。
- 了解 ElasticSearch 基本概念,基本原理
- 了解 ElasticSearch 基本使用方法,如何安装、创建索引、检索,分布式等。
- 和实际业务结合,开发集成 ElasticSearch 。
- 了解 ElasticSearch 更多细节的东西,优化,扩展等。
本文主要介绍一些 ElasticSearch 基本概念,以及和 Apache solr 的一些对比。
基本概念
什么是elasticsearch?
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。-----百度百科
为什么会用到elasticsearch?
涉及到like的大数据量模糊查询,如果是直接对数据库进行查询的话,由于like模糊查询无法对数据列应用索引,所以需要一条条字符串进行比对查询,效率非常低下。所以在Java中,解决大数据量的模糊查询,就会用到建立索引库,全文检索的查询技术。
Elasticsearch中的几个核心概念
全文检索
全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。-----百度百科
全文索引
采用分词器,对文本每个词进行切分