BeetleX.WebFamily之ElasticSearch搜索集成

        组件在最新版本中集成了基于ElasticSearch的文档搜索功能,通过这一功能可以快速地构建文档查询的webapi服务和web搜索应用。接下来介绍一下如果使用组件的ElasticSearch组件来进行文档构建和查询。

ElasticSearch要求

        组件支持7.x和6.x两个版本的ElasticSearch服务,在插件上要求装有IK中文分词插件(必须)。

使用

        新建一个控制台项目,并通过Nuget安装BeetleX.WebFamily 2.5.6或更高版本;然后在Main方法添加如下代码:

[BeetleX.FastHttpApi.Controller]public class Program{static void Main(string[] args){WebHost host = new WebHost();host.RegisterComponent<Program>();host.UserElasticSearch("test_query_string", "http://192.168.2.19:9200");host.UseEFCore<BlogDBContext>();host.Setting(o =>{o.Port = 80;o.LogLevel = EventArgs.LogType.Info;o.LogToConsole = true;}).Run();}public async Task<object> Search(IHttpContext context){var search = context.Server.GetDocument().CreateSearch(0, 20);search.QueryText = "beetlex websocket";search.Highlight = true;var items = await search.Execute();return items;}public async Task Import(IHttpContext context, EFCoreDB<BlogDBContext> db){var doc = context.Server.GetDocument();var items = from a in db.DBContext.Posts select a;foreach (var item in items)await doc.Put(new Document { Category = item.Project, Content = item.Content, CreateTime = item.CreateTime, ID = item.ID, Tag = item.Tag, Title = item.Title });}}

通过WebHost的UserElasticSearch构建一个ElasticSearch的文档实例,在参数中指写相关索引名和对应的服务地址。创建完成后就可以在控制器中通过IHttpContext.Server.GetDocument()来获取相关实例并进行操作。

添加和更新

     通过DocumentDB对象的Put方法进行文档添加或更新,通过Document.ID来进行最终操作。Put方法还支持批量添加处理,只需要在参数中传入IList<Document>对象列表即可。

搜索

        可以通过DocumentDB.CreateSearch方法来创建一个Search对象来进行文档查询

public class Search{//是否返回关键字高亮,主要包括内容和标题public bool Highlight { get; set; }//查询文档所在的分类public string Category { get; set; }//查询文档所属的标签,可以多个标签以空格分开public string Tag { get; set; }//查询的内容public string QueryText { get; set; }//查询页数public int Page { get; set; }//页数据大小public int Size { get; set; }//开始时间public DateTime? StartTime { get; set; }//结束时间public DateTime? EndTime { get; set; }//是否以创建日期来排序,默认否使用结果权重public bool OrderByDate { get; set; }}

最后通过Search.Execute方法来返回查询的内容。完整示例代码可以查看

https://github.com/beetlex-io/BeetleX-Samples/tree/master/BeetleX.Samples.WebFamily.ElasticSearch

BeetleX

开源跨平台通讯框架(支持TLS)
提供高性能服务和大数据处理解决方案

4250dc3f75bb35cb30fb9278c9a8fb5c.png

https://beetlex.io

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直男们给我看清楚!这才是小姐姐的真面目......

1 这才是化妆的真相&#xff01;▼2 听说&#xff0c;这就是当年Tom劈过得那棵树▼3 等一下&#xff01;这题真的有正确答案吗&#xff1f;▼4 这是一只长大成熟的猫咪了▼5 想当年上学的时候转书、转笔都一门灵&#xff0c;就是脑子不会转▼6 猫的四肢和尾巴仿佛都有独立…

模型部署到移动端_谷歌开源 MobileNetV3:新思路 AutoML 改进计算机视觉模型移动端...

雷锋网 AI 开发者按&#xff1a;谷歌从 17 年发布 MobileNets 以来&#xff0c;每隔一年即对该架构进行了调整和优化。现在&#xff0c;开发者们对 MobileNetV3 在一次进行了改进&#xff0c;并将 AutoML 和其他新颖的思想融入到该移动端的深度学习框架中。谷歌发布了相关文章对…

c++中stringstream_文史哲与艺术中的数学_智慧树章节答案

文史哲与艺术中的数学_智慧树章节答案更多相关问题His mother told me that he ______ read quite well at the age of five. A) should B) would C)在三角形ABC中&#xff0c;a&#xff0c;b&#xff0c;c分别是角A&#xff0c;B&#xff0c;C的对边&#xff0c;且满足m(2b&am…

将.net framework 4 部署在docker中的全过程(支持4.0 到 4.8,3.5应该也可以)

前言&#xff1a;docker自从诞生之初&#xff0c;就是运行在linux系统中&#xff0c;后来windows上也可以运行docker了&#xff0c;但是微软是通过自身的hyper-v技术&#xff0c;在你的windows系统中虚拟出来了一个小的linux虚拟主机&#xff0c;在它上面跑了个docker环境让你用…

有图有真相!这世界上,竟有人跟你长得一模一样!

全世界只有3.14 % 的人关注了爆炸吧知识你相信这个世界上有和你长得一模一样的人吗&#xff1f;我本来不信的看到这个摄影师的作品后真&#xff01;香&#xff01;冥冥之中&#xff0c;在平行宇宙在地球的另一端真的有另外一个你和你长得一模一样在生活&#xff0c;在呼吸老牌人…

两条线段的夹角 cesium_《原本》命题1.10 一条线段可以被分成两条相等的线段

命题1.10一条线段可以被分成两条相等的线段设&#xff1a;AB为一条直线。求作&#xff1a;平分为两条相等的线段。作等边三角形ABC(命题1.1)命题1.1已知一条线段可作一个等边三角形。作∠ACB的角平分线CD(命题1.9)命题1.9一个角可以切分成两个相等的角。那么&#xff1a;D 点就…

Minimal API Todo Sample

Minimal API Todo SampleIntro.NET 6 Preview 4 开始引入了 Minimal API 到如今的 RC1&#xff0c;Minimal API 也完善了许多并且修复了很多BUG&#xff0c;之前也写过文章介绍&#xff0c;可以参考:ASP.NET Core 6 Minimal API &#xff0c;不过只是写了一个 Hello World, 最早…

WPF基础到企业应用系列7——深入剖析依赖属性(三)

八. 只读依赖属性 我们以前在对简单属性的封装中&#xff0c;经常会对那些希望暴露给外界只读操作的字段封装成只读属性&#xff0c;同样在WPF中也提供了只读属性的概念&#xff0c;如一些 WPF控件的依赖属性是只读的&#xff0c;它们经常用于报告控件的状态和信息&#xff0c;…

Web的结构组件

位于Web浏览器与Web服务器之间还有一些用于帮助他们进行事物处理的应用程序&#xff0c;如下所示。 代理 代理位于客户端和服务器之间&#xff0c;接受所有客户端的HTTP请求&#xff0c;并将这些请求转发给服务器。 缓存 Web缓存或代理缓存是一种特殊HTTP代理服务器&#xff0c…

从没想过从上帝视角看地球,竟美得如此震撼!

全世界只有3.14 % 的人关注了爆炸吧知识“ 当你从另一个角度俯瞰地球&#xff0c;你就能发现不一样的世界 。。。试想你现在飘起来了飘得越来越高&#xff0c;地球在你眼里慢慢变小现在&#xff0c;你看见的是此生从未见过的景色——《极简宇宙史》当想象力带我走向未知脑海…

双目三维重建_【光电视界】简单介绍双目视觉三维重构

今日光电有人说&#xff0c;20世纪是电的世纪&#xff0c;21世纪是光的世纪&#xff1b;知光解电&#xff0c;再小的个体都可以被赋能。欢迎来到今日光电&#xff01;----与智者为伍 为创新赋能----1、三维重构1.1、三维重构到底是什么&#xff1f;首先要了解立体匹配算法&…

mendelay为什么安装不了_你为什么消防验收过不了?消防管道安装错误图集

来源&#xff1a;水电工论坛如有侵权&#xff0c;请联系删除消防管道安装如果一次没做好&#xff0c;验收不通过的话重新返工将对工程进度造成很大的影响&#xff0c;所以在施工时一定要注意以下的错误一定不能出现。2个沟槽卡箍间管段未设置支架立管角钢支架安装时应平面朝上管…

.NET 6 中的HTTP 3支持

dotnet团队官方博客发布了一篇HTTP3的文章&#xff1a;HTTP/3 support in .NET 6&#xff1a;https://devblogs.microsoft.com/dotnet/http-3-support-in-dotnet-6/。文章介绍了.NET 6 将预览支持HTTP3&#xff0c;.NET 7正式支持HTTP3&#xff0c;原因主要是HTTP/3 的 RFC 尚未…

Lock与synchronized 的区别

2019独角兽企业重金招聘Python工程师标准>>> 多次思考过这个问题&#xff0c;都没有形成理论&#xff0c;今天有时间了&#xff0c;我把他总结出来&#xff0c;希望对大家有所帮助 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义&#xff0c;此外还多了 …

linux 内核 三天吐血,编译安装——吐血经验,内附脚本

程序包编译安装&#xff1a;源码包&#xff1a;name-VERSION-release.src.rpmrpm由源码包安装后&#xff0c;使用rpmbuild命令制作成二进制格式的rpm包&#xff0c;而后再安装源代码–> 预处理–> 编译(gcc)–> 汇编–> 链接–> 执行源代码组织格式&#xff1a;…

mac编辑器coda使用小贴条

前言&#xff1a;最近用mac开发环境了&#xff0c;自然一天到晚用coda&#xff0c;可总是有不顺的地方&#xff0c;搜到这篇文章感觉像看到了知音人&#xff0c;实在是解决了我不少疑难问题啊。外文针对的coda版本较低&#xff0c;我总结的针对版本是version1.7.3 coda快捷键操…

我在 GitHub 上发现了一款骚气满满的字体!

全世界只有3.14 % 的人关注了爆炸吧知识转自&#xff1a;量子位&#xff0c;作者&#xff1a;栗体这个字体叫 Leon Sans&#xff0c;表面看去平平无奇。但事实上&#xff0c;它并不是普通的字体&#xff0c;体内蕴藏着魔力。Leon Sans 最特别的地方在于&#xff0c;字体是由代码…

PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用

前言众所周知&#xff0c;PHP用于开发基于HTTP协议的网站应用非常便捷。而HTTP协议是一种单向的通信协议&#xff0c;只能接收客户端的请求&#xff0c;然后响应请求&#xff0c;不能主动向客户端推送信息。因此&#xff0c;一些实时性要求比较高的应用&#xff0c;如实时聊天、…

WPF 实现火炬效果

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看&#xff0c;谢谢~。 01—效果预览02—代码如下一、FireControl.cs 代码如下using System; using System.Collections.Generic; using System.Linq; using System.Tex…

08 comet反向ajax

一&#xff1a;HTTP协议与技久链接分块传输---->反向ajax 反向ajax又叫comet, server push,服务器推技术. 应用范围: 网页聊天服务器,, 新浪微博在线聊天,google mail 网页聊天,都有用到. 原理: 一般而言, HTTP协议的特点, 连接<->断开. 具体什么时间断开? 服务器响应…