當前位置:首頁 » 編程語言 » javaelasticsearch

javaelasticsearch

發布時間: 2025-05-21 04:19:57

『壹』 Elasticsearch:如何使用 java 對索引進行 ES|QL 的查詢

在本文中,我們將探討如何使用Java對Elasticsearch執行ES|QL查詢。為了簡化理解,所有代碼已整理並置於GitHub(鏈接:GitHub - liu-xiao-guo/elasticsearch-java-esql),這是一個Maven項目。運行項目所需的命令為:

首先,確保安裝了Elasticsearch及Kibana(參考鏈接進行安裝)。特別注意,ES|QL僅在Elastic Stack 8.11及以上版本中可用,需下載對應版本進行安裝。首次啟動Elasticsearch時,記錄輸出中的密碼用於後續配置。

准備數據集時,從先前文章下載數據集,並注意數據欄位可能與文章中描述的不同。選取10個數據樣本,並將其鏈接放置於此。克隆項目後,可見包含數據集的sample.csv文件。數據樣本如下:

數據集欄位重新命名,示例文檔如下。

配置項目時,需編輯application.conf文件以適應具體設置,包括Elasticsearch訪問地址、數據集路徑及證書。為訪問Elasticsearch,請申請API密鑰。至此,配置基本完成。

在項目中,首先根據CSV格式欄位創建Book.java類,對應數據集中的欄位。閱讀EsqlArticle.java文件,讀取application.conf配置並創建Elasticsearch訪問客戶端。在客戶端配置下,刪除或創建books索引,定義索引映射(year為short類型,ratings為浮點數,其他為text欄位)。使用Jackson CSV映射器配置文件讀取,優化文檔攝取,索引速度極快。

接下來,提取書籍信息。假設目標為['Julie Strain'],需注意在攝入文檔時未針對author進行處理。當前ES|QL版本中,所有text欄位作為keyword欄位,全文搜索尚未完全實現。查詢結果展示,通過ObjectsEsqlAdapter忽略ES|QL查詢的JSON結果,返回熟悉的書籍列表。對於習慣SQL查詢和JDBC介面的用戶,客戶端提供ResultSetEsqlAdapter,以相同方式使用,返回java.sql.ResultSet。示例中,找出Plympton PressIntl出版評分最高的書籍,結果可見於GitHub項目。

通過遵循本文所述步驟及代碼示例,您將能夠熟練使用Java對Elasticsearch執行ES|QL查詢。

『貳』 ElasticSearch JVM配置

Elasticsearch是基於Java構建的,需要至少 Java8 來運行它。只支持Oracle的Java和OpenJDK。所有Elasticsearch節點和客戶機都應該使用相同的JVM版本。

我們推薦您安裝Java1.8.0_131版本或者Java 8發行版系列的後續版本。我們推薦您使用 LTS JAVA 版本。如果使用了已知的糟糕的Java版本,Elasticsearch將拒絕啟動。

Elasticsearch將使用的Java版本可以通過設置JAVA_HOME環境變數進行配置。

默認情況下,Elasticsearch告訴JVM使用最小和最大大小為1 GB的堆。 在轉移到生產環境時,重要的是配置堆大小,以確保Elasticsearch有足夠的可用堆。

Elasticsearch將通過Xms(最小堆大小)和Xmx(最大堆大小)設置分配在jvm.options文件中指定的整個堆。

這些設置的值取決於伺服器上可用RAM的數量。好的經驗法則是:

顯示啟用了從零開始的壓縮oops而不是:

下面是如何通過jvm.options文件設置堆大小的例子:

還可以通過環境變數設置堆大小。這可以通過注釋掉jvm.options文件中的Xms和Xmx設置來實現並通過ES_JAVA_OPTS設置這些值:

注意: 為Windows服務配置堆與上述配置不同。Windows服務最初填充的值可以如上配置,但在安裝服務之後會有所不同。有關更多細節,請參閱 Windows服務文檔 。

默認情況下,Elasticsearch配置JVM將堆從內存溢出異常轉儲到默認數據目錄(/var/lib/elasticsearch是針對RPM和Debian包發行版的,Elasticsearch安裝根目錄下的data目錄是針對tar和zip存檔發行版的)如果此路徑不適合接收堆轉儲,則應修改條目 -XX:HeapDumpPath=… 在jvm.options文件中。如果指定目錄,JVM將根據運行實例的PID為堆轉儲生成一個文件名。如果指定的是固定文件名而不是目錄,那麼當JVM需要對內存溢出異常執行堆轉儲時,文件必須不存在,否則堆轉儲將失敗。

默認情況下,Elasticsearch啟用GC日誌。這些都是在jvm.options中配置的和默認設置到與Elasticsearch日誌相同的默認位置。默認配置每64 MB旋轉日誌一次,最多可以消耗2 GB的磁碟空間。

默認情況下,Elasticsearch配置JVM將致命錯誤日誌寫入默認日誌目錄(/var/log/elasticsearch是RPM和Debian包發行版的,Elasticsearch安裝根目錄下的logs目錄是針對tar和zip存檔發行版的)。這些日誌是JVM遇到致命錯誤(例如,分割錯誤)時生成的。如果這個路徑不適合接收日誌,您應該在jvm.options文件中修改條目 -XX:ErrorFile=… 為一個替代路徑。

熱點內容
網路爬蟲的演算法 發布:2025-05-21 08:31:26 瀏覽:629
口袋精靈安卓哪裡下載 發布:2025-05-21 08:21:58 瀏覽:458
python橫坐標日期 發布:2025-05-21 08:19:44 瀏覽:931
雲存儲ia 發布:2025-05-21 08:09:15 瀏覽:127
php去除空格和換行符 發布:2025-05-21 08:08:22 瀏覽:344
php數組排序按值 發布:2025-05-21 08:06:17 瀏覽:57
shell監控腳本 發布:2025-05-21 08:02:43 瀏覽:264
全面資料庫 發布:2025-05-21 07:53:25 瀏覽:548
我的世界找到好友的伺服器 發布:2025-05-21 07:51:08 瀏覽:506
傳奇如何建立伺服器 發布:2025-05-21 07:46:38 瀏覽:358