1.什么是ElasticSearch
ElasticSearch是一个基于Lucene的搜索服务器。
它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎,其应用范围非常广泛。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。ElasticSearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elastic Search 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,最后将返回结果呈现给用户。
2.ElasticSearch的常规操作流程
开发者通过elastic提供的RESTful web接口,使用HTTP的PUT、GET、POST等操作,来使用elastic提供的搜索服务。
虽然elastic提供的RESTful web接口已经非常详尽了,但是我们什么时候使用GET,什么时候又使用PUT操作呢?各个操作具体的操作命令的格式是怎样的呢?显然,作为开发者——特别是elastic刚入门的开发者,要熟悉这些操作,您得深入了解官方的文档。如果您看过官方的文档,那您必定会被官方文档的复杂度所震撼到。也许对您来说,您要的只是一个简单的查询,但是您可能完全不知道从何下手。您所面临的问题复杂度,可能完全超乎您的想象!
3.面临的问题
3.1 elastic官方教程复杂,有一定的学习曲线
elastic的实现方式是基于倒排索引的,要理解其实现的算法就有一定的难度。如果对算法本身不了解,那后期的分片、索引、映射、查询等概念或功能,就更不易理解。仅仅查询功能的方式或者格式,就多大十几种,加上各个参数之间的组合情况,其格式就更多。开发者学习的周期较长、理解错误的可能性较大,对于企业来说时间成本完全不可控。虽然官方提供了充分的文档说明,但没有一定的学习能力和英文基础,想要满足企业实际的需求,其使用难度是较大的。
3.2 版本更新快,版本之间的跨度也大
目前我们提供了elastic6以上版本的服务支持,屏蔽了底层细节,尽量做到各版本之间的一致化的使用,这对于elastic的升级非常有用。elastic各版本之间的差异较大,如果因为elastic版本升级导致各生产管理系统的程序调整,对于程序员和企业来说,其给予的打击可能是致命的,花费的时间和精力也不好估量。
3.3 HTTP操作复杂
就算通读了整篇ElasticSearch,也不知道各个开发语言是怎么来调用您的服务。您需要去总结什么情况下需要使用PUT(数据提交时),什么情况下需要使用DELETE(删除数据时),什么时候又使用GET操作……
4.我们的解决方案
您只需安装好您的elastic服务(可参考安装教程),然后在我们平台上创建您的数据源,即可使用普通的HTTP(GET或者POST)请求来调用您自己的elastic服务。如何使用各类开发语言调用我们的HTTP接口,官方文档中已经给了说明,您可以参考相应语言的程序代码。当然,我们还提供了在线技术支持,您有疑问可以随时咨询。
参考如下图,用户只需要对接我们的“elastic连接器”,就可以调用后端的elastic服务。您不需要知道后端用的是什么操作。当我们的接口无法满足要求时,我们除了提供原生的Elastic操作语句和sql查询外,也提供了详尽的语句说明,特别是查询语句的使用,具体参考我们的elastic连接器-通用模板的帮助手册。
具体操作,请参考如下步骤:
4.1、选择连接器
进入万维易源的官网:http://www.showapi.com
参照下图的输入:
4.2、选择连接器模板
所谓模板就是官方技术人员根据连接器的要求已经配置好的接口,只是这些接口需要匹配相应的数据源才可以操作接口。每个连接器至少有一个模板,如elastic连接器:
4.3、配置数据源
在首次使用连接器时,要绑定您自己的数据源,类似于配置您的数据库连接一样。操作步骤如下:
填写完以上参数后,点击保存,然后回到[ElasticSearch连接器-通用模板][ElasticSearch连接器-通用模板]
ElasticSearch连接器-通用模板: https://www.showapi.com/apiGateway/view?apiCode=2161
4.4、绑定数据源:
根据第三步中的说明,操作最后一个步骤,回到通用模板页。在通用模板页面,绑定您的数据源。首先点击“绑定我的数据源”按钮,在弹出框中选择您新建的数据源,最后点击“绑定”按钮。系统会提示您正在处理中,这个时候是在给您生成一个功能个人使用的、私人定制的接口。也就是说,我们用连接器生成一个官方的,可以在线调试、测试的模板,然后再用模板配合您的数据源生成一个您自己管理的全功能的接口,这个接口用来管理您自己的数据(此处管理的是ElasticSeach中的数据)。绑定操作如下图:
绑定完成后,生成的接口名称和数据源的名称一致,如下:
上图标记处,您可以通过点击相应的数据源来切换您生成好的私人接口,点击后要注意接口地址的变化。虽然一个数据源可以生成多个通用模板对应的接口,但是原则上我们建议您的一个数据源对应一个接口。
完成以上步骤后,您已经拥有了您的一个接口,接口的调用说明,请参考如下资料:
https://www.showapi.com/helpcenter
接口调用各开发语言的示例模板,在接口页的参数文档中有说明,如下截图的最下方就可以查阅:
4.5、各接口使用说明
连接器地址:https://www.showapi.com/gwConnector/middlePage?code=elastic
连接器模板地址:https://www.showapi.com/apiGateway/view?apiCode=2161
当前接口包括:查询、(数据)保存、删除、执行ES语句、执行SQL语句
每个接口的使用说明,请参考连接器模板的帮助手册。
5.性能
您的请求会经过万维易源进行中转,可能会损失掉几十毫秒的性能,但是通常对终端消费者提供的搜索服务在几百毫秒甚至几秒的时间内才能完成,所以通过易源中转性能损耗上在1%以内,对整个搜索性能的影响不大。
6.安全性
对于MySQL连接器,易源的IP是:
121.41.60.109
120.26.59.160
120.26.61.225
129.211.129.137
适用于以下场景:
1.有模糊查询的需求,如文章关键词搜索、新闻查找、分词需求、关键词统计分析等
2.实时搜索需求:产品查找、搜索过滤
3.有搜索需求,且要求多开发语言的支持
4.要求分布式、高扩展和具备数据分析能力的搜索引擎
5.有搜索需求,但却不熟悉搜索引擎的技术企业
比起传统的API对接方式,使用连接器真正让程序员实现了配置化开发,程序员只用编写很少的代码,就能实现对Elastic的对接。
通过连接器的节点配置,在很大程度上实现了解耦合,在一定程度上实现了节点组件化。
借助showapi.com强大的日志系统,用户可以查看近期详细的调用日志,包括每日次的请求参数和返回参数,大大方便了Bug排查、问题回溯。