腾讯云ES+SCF快速构建搜索服务

搜索服务

搜索服务广泛地存在于我们身边,例如我们生活中用的百度,工作中用的wiki搜索,淘宝时用的商品搜索等,这些场景的数据具有数据量大、结构化、读多写少等特点,而传统的数据库的事务特性在搜索场景并没有很好的使用空间,并且在全文检索方面速度慢(如like语句)。因此,Elasticsearch应运而生。

Elasticsearch是一个广泛应用于全文搜索领域的开源搜索引擎,它可以快速地索引、搜索和分析海量的文本数据。腾讯云ES是基于Elasticsearch构建的高可用、可伸缩的云端托管Elasticsearch服务,对结构化和非结构化的数据都有良好的支持,同时还提供了简单易用的 RESTful API 和各种语言的客户端,方便快速搭建稳定的搜索服务。

本文将针对搜索场景,使用《腾讯云ES官方文档》作为语料,介绍如何使用腾讯云ES+SCF快速搭建搜索服务。先贴一个搜索服务界面:

image

资源准备

只需要一个ES集群!在腾讯云购买一个ES集群,集群的规模根据搜索服务的QPS和存入的文档的数据量而定。具体可以参考《节点类型存储配置建议

部署搜索服务

我们使用腾讯云免费的SCF工具部署搜索服务的前端界面和后台服务

1 在云函数->函数服务界面左上角首先选择你购买ES集群的地域

image

2 新建一个函数服务,记住你设置的函数名称哦,然后点击下一步 -> 完成

image

3 在函数配置界面点击右上角的编辑,开启内网访问,并选择你创建ES所选的VPC,然后点击保存

image

4 首先将代码zip包下载到本地。然后在函数代码界面的提交方法中选择上传本地zip包,并选择刚下载的zip包,点击保存:

image

5 在函数代码界面修改代码。需要修改的文件有index.pyindex.html

* `index.py`中的`es_endpoint`修改为你的ES集群的内网地址,填写格式如:`http://10.0.3.14:9200`
* `index.py`中的`es_password`修改为白金版ES密码,如果不是白金版则不修改
* `index.html`中的`server_name`修改为你创建的SCF函数的函数名称,默认为`myserver`
image
image

【注意】样例默认使用**es_corpus_0126**作为索引名,请确保样该索引没有业务在使用,如需修改,可在**index.py**中修改**es_index**变量

6 在触发方式界面点击“添加触发方式”,按截图所示添加API网关触发器,并启用集成响应,然后点击保存

image

7 可以在触发方式中看到函数的“访问路径”,点击这个路径就可以访问页面了

image

8 上传《腾讯云ES官方文档》样例数据。点击搜索框上方的文字,自动导入数据

image

9 至此,一个基于腾讯云ES的简单的问答搜索服务后台就部署完成了。开始你的搜索之旅吧!

了解更多

停用词和用户词典导入

停用词不会被ES检索;用户词典在分词的时候将保留该词。在上面的案例中,我们导入了默认的停用词库用户词典,你也可以通过ES集群详情页->高级配置->更新词典导入自己的停用词和用户词典

image

同义词配置

同义词配置需要在创建索引时指定,支持Solr和WordNet两种同义词格式,可以参考《Solr synonyms》对格式的介绍

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构沉思录

Skywalking是什么

Skywalking 是一个分布式追踪(Trace)系统。除了 Skywalking 之外,比较出名的分布式追踪系统还有 Dapper、鹰眼、Pinpoint ...

29040
来自专栏Python数据科学

如何在Python 中更优雅的记录日志?

在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样。在使用时我们需要配置一些 Handler、For...

16950
来自专栏崔庆才的专栏

Python 中更优雅的日志记录方案

在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样。在使用时我们需要配置一些 Handler、For...

19420
来自专栏别先生

Lucene的全文检索学习

Lucene的官方网站(Apache的顶级项目):http://lucene.apache.org/

10310
来自专栏芋道源码1024

Elasticsearch 7.4.0 发布,分布式搜索和数据分析引擎

Elasticsearch 7.4.0 发布了,Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎。

14930
来自专栏铭毅天下

干货 | Elasticsearch 冷热集群架构实战

Elasticsearch实战数据量级少的时候,单节点就能玩的很6,但是随着数据量的增长,多节点分布式横向扩展集群是大势所趋。

46990
来自专栏Python爬虫与数据挖掘

Python大佬开发了一个爬虫项目教你实现公众号文章的抓取和统计分析

weixin_crawler从2018年6月份就开始利用业余时间开发,到今日正式问鼎江湖。在正式介绍weixin_crawler之前,我准备了两个问题,这...

15620
来自专栏别先生

Elasticsearch全文检索学习

ElasticSearch官方网址(中文):https://www.elastic.co/cn/

15070
来自专栏小手冰凉

搭建ELK日志分析系统详解

日志分析是我们运维解决系统故障、发现问题的主要手段。为了可以集中管理多台服务器的日志记录,开源实时日志分析ELK平台应用而生,ELK由Elasticsearch...

12940
来自专栏zhisheng

Flink 实时写入数据到 ElasticSearch 性能调优

bulk失败的原因是由于集群dynamic mapping自动监测,部分字段格式被识别为日期格式而遇到空字符串无法解析报错。 解决方案:关闭索引自动检测

18420

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励