F. es安裝相關
1.elasticsearch安裝
執行 http://localhost:9200/
2.head外掛程式
3.bigdesk外掛安裝
(安裝細節 百度:windows elasticsearch 安裝,有詳細內容)
二. es外掛相關
www.searchtech.pro/elasticsearch-plugins (es 插件大全)
(ik 專案)
(ES的插件 監控節點狀態, 也可以偵錯你的ES查詢)
(2.1.1 + 1.6ik 還有拼音 和其他分詞器整合好了)
(類似head的插件)
www.elastic.co/downloads/marvel (監控ES健康狀態)
konf插件(據說能看集群負載)
三.es C# 客戶端範例
#1. 套件下載elasticsearch.net,nest 元件。
nest元件會依賴下載elasticsearch元件。
使用文件:
備註:.net 使用es的相對少一些,es版本更新也很快,很多使用也都是靠自己揣摩。多交流,多分享。
2. 建立連線客戶端
public ElasticClient GetClient() { var node = new Uri("http://192.168.17.54:9200"); var settings = new ConnectionSettings( node, defaultIndex: "my-application" ); return new ElasticClient(settings); }
#3. 建立索引模型(索引結構)
[ElasticType(IdProperty = "Id", Name = "Person")] public class Person { [ElasticProperty(Name = "Id", Type = FieldType.String, Index = FieldIndexOption.NotAnalyzed)] public string Id { get; set; } public string Firstname { get; set; } public string Lastname { get; set; } public string[] Chains { get; set; } [ElasticProperty(Name = "content", Type = FieldType.String, Index = FieldIndexOption.Analyzed, Analyzer = "ik_max_word")] public string Content { get; set; } }
備註:其他人提供的model範例,更詳細些,可下載附件。
4. 索引內容(建立索引)
private void btnIndex_Click(object sender, EventArgs e) { //var client = new ElasticsearchClient(); ////index a document under /myindex/mytype/1 //var indexResponse = client.Index("myindex", "mytype", "1", new { Hello = "World" }); var client2 = GetClient(); //client2.CreateIndex("test"); //client2.Map<Person>(c => c.MapFromAttributes()); IEnumerable<Person> persons = new List<Person> { new Person() { Id = "4", Firstname = "aaa",//Boterhuis-040 Lastname = "Gusto-040", Chains = new string[]{ "a","b","c" }, }, new Person() { Id = "5", Firstname = "sales@historichousehotels.com", Lastname = "t Boterhuis 1", Chains = new string[]{ "a","b","c" }, }, new Person() { Id = "6", Firstname = "Aberdeen #110", Lastname = "sales@historichousehotels.com", Chains = new string[]{ "a","b","c" }, }, new Person() { Id = "7", Firstname = "Aberdeen #110", Lastname = "t Boterhuis 2", Chains = new string[]{ "a","b","c" }, }, new Person() { Id = "8", Firstname = "Aberdeen #110", Lastname = "t Boterhuis 2", Chains = new string[]{ "a","b","c" }, }, }; //foreach(var p in persons) client2.IndexMany<Person>(persons,"test"); }
5.簡單搜尋範例
var client = GetClient(); var rs = client.Search<Person>(s => s.Index("test").QueryString(this.textBox1.Text)); this.richTextBox1.Text = JsonConvert.SerializeObject(rs.Documents);
private void btnUpdate_Click(object sender, EventArgs e) { var client2 = GetClient(); client2.Update<Person, object>(u => u .Index("test") .Id(4) .Doc(new { Id="4", Firstname = "United States" }) .RetryOnConflict(3) .Refresh() ); //var u1 = new Person() // { // Id = "4", // Firstname = "Boterhuis-040", // Lastname = "Gusto-040", // Chains = new string[]{ "a","b","c" }, // }; //var u2 = new Person() // { // Id = "4", // Firstname = "United States", // Lastname = "Gusto-040", // Chains = new string[] { "a", "b", "c" }, // }; //client2.Update<Person,Person>(u1,u2). }###7. 索引刪除#######
private void btnDelete_Click(object sender, EventArgs e) { var client2 = GetClient(); client2.DeleteIndex("test"); client2.DeleteIndex("my-application"); }
8. 总结
以上示例代码,简单的应用已经足够用。其他的就是高亮和分组。可以看文档。
四. es 集群
es 默认是一个集群,相对solr云来说配置更简单,搭建更方便些。但是更多还是要根据业务进行自己的集群设计还是好费很多时间,很多精力。(上手容易,用好难)
五. es 与solr 对比
个人目前了解的:
原来solr资料比较多,现在貌似es的资料更多一点。solr是官方英文pdf,es也是英文的。
原来solr还有中文书籍,现在貌似没有了。es 目前还有几本书籍,但是讲的es版本略有老旧。
solr上手相对es略微难些。
(n年前,我用的是solr,那时候还没有solrcloud;es还没有出来,那时候solr资料反而多。个人也实现了自己的solr集群方案。其他的功能上的对比,还是百度,不重复。)
六. 如果es客户端调试请求
建议下载HTTPAnalyzer之类的tcp拦截工具。这样可以拦截验证sdk出来的请求连接,对比资料和书籍看下哪些参数写错了,对调试很有帮助。
七. es 附录
es术语介绍:
cluster:
代 表一个集群,集群中有多个节点,其中有一个为主节点。这个主节点是可以通过选举产生的。注意,主从节点是对于集群内部来说的。es的一个概念就是去中心 化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价 的。
shards
代表索引分片。es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas
代表索引副本,es可以设置多个索引的副本。副本的作用,一是提高系统的容错性,当某个节点的某个分片损坏或丢失时可以从副本中恢复,二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
recovery
代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
river
代表es的一个数据源,也是其他存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
gateway
代 表es索引快照的存储方式。es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再 重新启动时,就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的 HDFS和amazon的s3云存储服务。
discovery.zen
代表es的自动发现节点机制。es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport
代表es内部节点或集群与客户端的交互方式。默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。
以上是.net Elasticsearch入門實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C#.NET在現代世界中廣泛應用於遊戲開發、金融服務、物聯網和雲計算等領域。 1)在遊戲開發中,通過Unity引擎使用C#進行編程。 2)金融服務領域,C#.NET用於開發高性能的交易系統和數據分析工具。 3)物聯網和雲計算方面,C#.NET通過Azure服務提供支持,開發設備控制邏輯和數據處理。

C#.NET開發者社區提供了豐富的資源和支持,包括:1.微軟的官方文檔,2.社區論壇如StackOverflow和Reddit,3.GitHub上的開源項目,這些資源幫助開發者從基礎學習到高級應用,提升編程技能。

C#.NET的優勢包括:1)語言特性,如異步編程簡化了開發;2)性能與可靠性,通過JIT編譯和垃圾回收機制提升效率;3)跨平台支持,.NETCore擴展了應用場景;4)實際應用廣泛,從Web到桌面和遊戲開發都有出色表現。

C#並不總是與.NET捆綁在一起。 1)C#可以在Mono運行時環境中運行,適用於Linux和macOS。 2)在Unity遊戲引擎中,C#用於腳本編寫,不依賴.NET框架。 3)C#還可用於嵌入式系統開發,如.NETMicroFramework。

C#在.NET生態系統中扮演核心角色,是開發者的首選語言。 1)C#提供高效、易用的編程方式,結合C、C 和Java的優點。 2)通過.NET運行時(CLR)執行,確保跨平台高效運行。 3)C#支持從基本到高級的用法,如LINQ和異步編程。 4)優化和最佳實踐包括使用StringBuilder和異步編程,提高性能和可維護性。

C#是微軟在2000年發布的編程語言,旨在結合C 的強大功能和Java的簡潔性。 1.C#是一種類型安全、面向對象的編程語言,支持封裝、繼承和多態。 2.C#的編譯過程將代碼轉化為中間語言(IL),然後在.NET運行時環境(CLR)中即時編譯成機器碼執行。 3.C#的基本用法包括變量聲明、控制流和函數定義,而高級用法涵蓋異步編程、LINQ和委託等。 4.常見錯誤包括類型不匹配和空引用異常,可通過調試器、異常處理和日誌記錄來調試。 5.性能優化建議包括使用LINQ、異步編程和提高代碼可讀性。

C#是一種編程語言,而.NET是一個軟件框架。 1.C#由微軟開發,適用於多平台開發。 2..NET提供類庫和運行時環境,支持多語言。兩者協同工作,構建現代應用。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。