亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ES學習筆記之---從源碼啟動ES

發布時間:2020-06-10 21:44:39 來源:網絡 閱讀:5682 作者:sbp810050504 欄目:大數據

開發中需要用到ES的插件, 開發ES插件需要了解ES的內部結構, 于是再次開始學習ES的源碼。一方面了解插件開發的套路,一方面了解get接口的實現細節。

了解ES的原理,源碼是文檔最好的補充。源碼甚至比文檔更有助于了解ES的內部核心。

首先從git上clone下源碼:

git clone https://github.com/elastic/elasticsearch.git

cd elasticsearch

git tag -l

git checkout v2.4.5

sh run.sh

如果使用run.sh沒有成功,再試一次, 有可能是maven的jar包沒有下載到。
這里使用v2.4.5是由于在編譯es的過程中會用到相關的jar包,而https://oss.sonatype.org/content/repositories/snapshots/org/elasticsearch/rest-api-spec/并不是所有版本的jar包都有, 所以從中選取了v2.4.5, 這跟手機選號一樣,純屬個人主觀。

這里JDK要換成1.8, 1.7的jdk maven會報protocol_verson錯誤。
編譯成功后,就會生成elasticsearch的zip包, 需要解壓,因為源碼中會用到conf文件。

cd /home/shgy/es_workspace/elasticsearch/distribution/zip/target/releases/
unzip elasticsearch-2.4.5-SNAPSHOT.zip 
mv elasticsearch-2.4.5-SNAPSHOT /opt/

編譯完成后, 將源碼import到intellij中, intellij的啟動參數

vm options : 

-Des.path.home=/opt/elasticsearch-2.4.5-SNAPSHOT

Program arguments: 

start

啟動成功后使用

curl http://localhost:9200

即可看到經典的

{
  "name" : "Ruckus",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "ZIl7g86YRiGv8Dqz4DCoAQ",
  "version" : {
    "number" : "2.4.5",
    "build_hash" : "c849dd13904f53e63e88efc33b2ceeda0b6a1276",
    "build_timestamp" : "2018-08-12T01:30:55Z",
    "build_snapshot" : true,
    "lucene_version" : "5.5.4"
  },
  "tagline" : "You Know, for Search"
}

從源碼啟動成功后, 可以做的事情就多了。 比如看看You Know, for Search是怎么來的;看看ES內部的index/get/search等接口內部是如何運行的。
更重要的是, 可以將相關接口的邏輯套用, 依樣畫葫蘆開發plugin實現自己的業務邏輯。

以debug的方式啟動es后, 第一個斷點可以打在org.elasticsearch.http.netty.HttpRequestHandler.messageReceived(),這是netty的編程模式。

比如You Know, for Search, 通過debug, 可以了解到其調用鏈為:
HttpRequestHandler.messageReceived() --- RestMainAction.handleRequest()

Rest_xxx_Action是es所有http接口通用的套路。比如:

RestSearchAction    _search
RestGetAction    /{index}/{type}/{id}
RestIndexAction    /{index}/{type}/{id} 
......

可以說, Rest_xxx_Action是es的外殼, 整個ES的結構大致如下圖所示:
ES學習筆記之---從源碼啟動ES

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹寨县| 汾阳市| 嘉荫县| 蓬溪县| 泸州市| 海南省| 七台河市| 邮箱| 炉霍县| 南阳市| 九龙城区| 陆丰市| 霍州市| 镇康县| 合肥市| 甘洛县| 浙江省| 津市市| 昌吉市| 扶余县| 桑日县| 江城| 清水河县| 新余市| 建阳市| 乐陵市| 湘潭市| 唐河县| 浮梁县| 长子县| 罗城| 财经| 梓潼县| 资兴市| 新沂市| 迁西县| 庆阳市| 巨野县| 隆德县| 广丰县| 吴堡县|