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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...