日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BeetleX.WebFamily之ElasticSearch搜索集成

發布時間:2023/12/4 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)
提供高性能服務和大數據處理解決方案

https://beetlex.io

總結

以上是生活随笔為你收集整理的BeetleX.WebFamily之ElasticSearch搜索集成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。