ElasticSearch本地調測環境構建

来源:http://www.cnblogs.com/hrbeu05/archive/2017/12/02/7954555.html
-Advertisement-
Play Games

elasticsearch,IDEA,Gradle,源碼編譯,本地調測 ...


ElasicSearch版本:6.0.0:https://github.com/elastic/elasticsearch.git

1:安裝JVM(JVM1.8以上)

2:安裝gradle(3.3以上)

下載:gradle下載地址:http://services.gradle.org/distributions/,下載4.3版本。(本人第一次安裝的是4.4.5,結果到後面執行gradle idea指令的時候,下載不到gradle-logger-4.4.5的包,阿裡的maven或者jcenter都沒有,最新的歸檔的只有4.3)

環境變數:配置GRADLE_HOME到你的gradle根目錄當中,然後把%GRADLE_HOME%/bin加到PATH的環境變數。

檢查:進入cmd控制台,執行gradle -V,會輸出Groovy,JVM等的版本,說明安裝OK

3:下載elasticsearch源碼:

下載ElasticSearch代碼:https://github.com/elastic/elasticsearch,(本人下載的是6.0.0版本):

4:配置軟體包倉庫源地址(如果忍受得了下載的網速,此步驟可選。此步驟因為需要從包倉庫jcenter或者apache的maven庫下載依賴額所有jar,會很漫長,耗費了40分鐘,使用國內的倉庫源,只需要5分鐘即可)

  • C:\Users\用戶\.gradle下建立init.gradle文件
  • 編輯文件內容如下:

allprojects{

    repositories {

        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'

        all { ArtifactRepository repo ->

            if(repo instanceof MavenArtifactRepository){

                def url = repo.url.toString()

                if (url.startsWith('https://repo.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {

                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."

                    remove repo

                }

            }

        }

        maven {

            url REPOSITORY_URL

        }

    }

}

  • 編輯${elasticsearch源碼根目錄}\distribution\build.gradle文件,紅色部分替換為如下。

buildscript {

  repositories {

    maven {

      url "http://maven.aliyun.com/nexus/content/groups/public/"

    }

  }

  dependencies {

    classpath 'com.netflix.nebula:gradle-ospackage-plugin:3.4.0'

  }

}

5:執行gradle idea

cmd控制台進入elasticsearch源碼根目錄,執行gradle idea。(idea導入源碼前,必須進行此步驟,否則會報錯)

 

 

6:ElasticSearch工程導入IDEA

IDEA導入工程,導入的時候需要設置gradle_home,配置為gradle的安裝根目錄。勾選Offline work(否則會連到官網私服下載,會超級慢)和Use local gradle distribution。

7:編譯

IDEA中view->tool windows->gradle點擊,在gradle project視圖欄目里找到core工程,點擊build編譯,也可以選擇jar,編譯後會在core\build\distributions\下生成elasticsearch的jar包。

 

 

8:啟動

Elasticsearch的啟動類:org.elasticsearch.bootstrap.Elasticsearch,右鍵運行。

錯誤一:

Error:Unable to make the module: core_main, related gradle configuration was not

執行

解決方式:刷新gradle工程

 

問題二:啟動報錯

 

解決方式:

搞了半天是IDEA和gradle的相容性bug問題:

https://stackoverflow.com/questions/42587487/noclassdeffounderror-after-intellij-idea-upgrade

編譯無問題,運行時找不到依賴的類。

 

根據所說,此bug在IDEA的新版本解決了,but我的IDEA版本是:2016.3.4

官網下載IDEA 2017.2.5版本:

https://www.jetbrains.com/idea/download/previous.html?fromIDE=

新版本安裝後,此問題解決。

問題三:啟動包es.path.conf未設置。

 

查看源碼的啟動腳本:

distribution\src\main\resources\bin\下elasticsearch.sh中:

 

所需的配置文件在源碼的位置:

G:\github-java\elasticsearch-6.0.0\distribution\src\main\resources\config。故而設置兩個JVM環境變數即可:

 

再次啟動此問題解決。

問題四:access denied ("javax.management.MBeanTrustPermission" "register")

 

解決方式:設置JVM環境變數如下:-Dlog4j2.disable.jmx=true

 

問題五:載入不到plugin。

解決方式:參照發行版,發行版目錄下有空的plugins目錄,在G:\github-java\elasticsearch-6.0.0\distribution\src\main\resources下也建立空的plugins目錄。

問題六:Unsupported transport.type

 

解決方式:將發行版mudules目錄下內容拷貝過來。

問題七:空指針異常:

 

跟蹤源碼,發現如下原因:ES中對於modules中對於jar包名稱包含elasticsearch-rest-client.jar包的,在編譯的時候,因為本地編譯預設是snapshot的,所以會追加snapshot,這樣的化版本號變為了6.0.0-snapshot,而modules中是從發行版拷貝過來的,結合代碼上追加的codebase,變為了codebase.elasticsearch-rest-client-6.0.0.jar,這樣index版本號就出錯了。

 

解決方式:修改org.elasticsearch.Build 74行,

// isSnapshot = true; by angie_hawk7

isSnapshot = false;

 

也可以設置jvm環境變數:build.snapshot

再次啟動OK

 

 

10:測試

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 常用無返回值的事件 onabort圖像載入被中斷 onblur 元素失去焦點 onfocus 元素獲得焦點 onreset 重置按鈕被點擊 onselect 文本被選中 onsubmit 確認按鈕被點擊 onchange 域的內用被改變 onclick 當用戶點擊某個對象時調用的事件 ondblcl ...
  • 今天在寫代碼的時候,我犯了一個很low的錯誤,廢話不多說,直接上代碼: 大家看到之後,第一反應肯定會認為是個語法錯誤,可是自己仔細想想,這是什麼原因?似乎還不能解釋清楚,好奇寶寶模式立即啟動,經過查閱相關資料得到了答案,接下來我們一起來探討下其中的原理。 疑惑解答 大家有沒有考慮過為什麼上面這種寫法 ...
  • 使用XHR發送一個json請求一般是這樣: 使用fetch的實例: Fetch參數 fetch(input [,init]) input(必須) 定義要獲取的資源(請求地址) init(可選) 參數 | 描述 method 請求使用的方法,如GET、POST headers http請求頭(user ...
  • js導出Excel的方法 利用html的table表格的格式書寫想要的excel格式 獲取table的內容並組裝成一個xls格式的字元串 利用Blob對象生成一個xls格式的文件 利用a標簽的download屬性創建文件名,並下載到本地 例子: "js導出Excel" table表格內容 先寫一個正 ...
  • <form action="" method="get/post"> 表單<form></form>的提交方式有兩種:post,get post 方式 指交互信息 放入到請求體裡面 get 方式 指交互信息 放入到請求頭裡面 區別: 1.發送請求的空間大小不一致: get請求存放的數據不能超過500 ...
  • 首先說一下背景,在雙十一的時候,我們系統接受X寶的訂單推送,同事原先的實現方式是使用redis的List作為推送數據的承載,在非大促的場景下, 一切運行正常,記憶體占用大概3-4G,機器是16G記憶體。由於提前預計不足,在雙十一來臨的時候,訂單瞬時量達到了平時的10X倍,記憶體非常吃緊,情況算 是非常緊急 ...
  • Redis 高可用集群 Redis 的集群主從模型是一種高可用的集群架構。本章主要內容有:高可用集群的搭建,Jedis連接集群,新增集群節點,刪除集群節點,其他配置補充說明。 高可用集群搭建 集群(cluster)技術是一種較新的技術,通過集群技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活 ...
  • 這兩天在MyEclipse中開發Web項目時,連接MYSQL資料庫,出現問題:Access denied for user 'root'@'localhost' (using password:YES)。 經查找資料發現是root帳戶預設不開放遠程訪問許可權,所以需要修改一下相關許可權。 解決方案: 打 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...