官术网_书友最值得收藏!

1.3 Elasticsearch的Python客戶端

首先介紹Elasticsearch的安裝以及Python客戶端的基本使用,然后介紹如何定義索引結構。

1.3.1 安裝Elasticsearch

如果在Windows操作系統下,則可以從https://www.elastic.co/cn/downloads/elasticsearch下載Elasticsearch的安裝包。這里使用的版本為7.8.0。得到文件elasticsearch-7.8.0.zip。

直接解壓至某目錄,例如D:\elasticsearch-7.8.0。下載完解壓后有以下幾個路徑:bin是運行的腳本;config是設置文件;lib中放的是依賴包。到目錄D:\elasticsearch-7.8.0\bin下,運行elasticsearch.bat。

如果顯示Java虛擬機(Java Virtual Machine,JVM)內存不夠,則可以在D:\elasticsearch-7.8.0\config\jvm.options配置文件中調整內存大小。其中,Xms參數表示堆空間的初始大小;Xmx參數表示堆空間的最大大小。應該把最小和最大JVM堆設置成相同的值。例如:

     -Xms4g
     -Xmx4g

成功啟動Elasticsearch后,在瀏覽器中打開網址:http://localhost:9200/。

啟動成功后,會在解壓目錄下增加2個文件夾:data用于存儲索引數據;logs用于日志記錄。因為創建索引耗時,所以預先將文檔寫入一個日志目錄。

如果使用Linux的Ubuntu發行版,則可以用debian安裝包安裝Elasticsearch;如果使用RedHat Enterprise Linux,則可以使用RPM包安裝Elasticsearch。

在Windows操作系統下,啟動Elasticsearch服務:

     > bin\elasticsearch.bat

通過HTTP(Hyper Text Transfer Protocol,超文本傳輸協議)發送指令和Elasticsearch交互。curl是一個知名的網絡命令行工具,可以用來發送GET或者POST命令。在Linux下默認已經安裝了這個命令行工具,可以用curl命令行訪問網址http://localhost:9200/:

     > curl http://localhost:9200/

或者在命令行外殼程序PowerShell中運行:

     > Invoke-RestMethod http://localhost:9200

在Windows下可以用Python代碼測試Elasticsearch服務:

Kibana是Elasticsearch的開源數據可視化儀表板,可以在Kibana控制臺發送命令給Elasticsearch。在Windows操作系統下,Kibana可以使用.zip軟件包安裝,從https://www.elastic.co/cn/downloads/kibana下載Kibana安裝包。

在編輯器中打開配置文件config/kibana.yml設置Elasticsearch實例:

     elasticsearch.hosts: ["http://localhost:9200"]

在Windows操作系統下運行bin\kibana.bat,以啟動Kibana。

在瀏覽器中打開網址http://localhost:5601進入Kibana的管理界面。

如果無法正常訪問,則可以用如下命令檢查端口占用情況。

     >netstat -ano | findstr 5601

如果仍然無法正常使用,則可以先測試X-Pack插件或者檢查Elasticsearch中插件的安裝情況。

1.3.2 基本使用

elasticsearch-py(https://github.com/elastic/elasticsearch-py)是Elasticsearch的官方底層Python客戶端。Elasticsearch DSL(https://github.com/elastic/elasticsearch-dsl-py)是高層客戶端。

先介紹elasticsearch-py的使用。使用pip命令安裝elasticsearch模塊:

     pip install elasticsearch

定義索引:

簡單的用法如下:

索引和查詢員工的例子:

從指定位置返回結果:

     #設置size選項,確定要返回的搜索命中數
     test=es.search(index=['test'], size=1000, from_=0)

使用函數enumerate()返回結果:

接下來介紹Elasticsearch DSL的使用。安裝模塊:

     pip install elasticsearch-dsl

直接寫成一個dict的典型的搜索請求如下:

這種方法的問題是它非常冗長,容易出現語法錯誤,例如錯誤的嵌套、難以修改(如添加另一個過濾器)。

用Python DSL重寫示例:

用一個簡單的Python類,代表博客系統中的一篇文章:

接下來介紹攝取處理器插件的使用。

首先安裝attachment插件:

     #sudo bin/elasticsearch-plugin install ingest-attachment

然后重新啟動Elasticsearch,讓插件生效。

在Python客戶端創建一個管道,然后使用攝取處理器插件attachment,如下所示:

1.3.3 定義索引結構

要將JSON數據傳遞給方法的body參數,用于創建Elasticsearch映射的Python字典,代碼如下:

可以更改分片和副本設置:

index.create()方法的API調用的基本布局如下:

調用該方法時,只有兩個必需的參數:一個是以字符串形式傳遞到索引的索引名稱;另一個是將Python字典傳遞給方法的body參數。但是,有一個選項可以指示Elasticsearch忽略指定的HTTP錯誤代碼。

如果執行得當,Elasticsearch集群應返回一個Python字典。該字典在響應中具有值為“True”的“acknowledged”鍵,如下所示:

評估命令的Python條件語句如下所示:

使用Kibana控制臺或curl請求可以驗證索引及其映射是否已正確創建。

定義索引結構的完整Python代碼如下:

Elasticsearch不會分析Keyword數據類型,這意味著索引的字符串將保持不變。Keyword數據類型可用于聚合列。

與Keyword字段數據類型不同,索引到text類型的字符串在存儲到反向索引中之前將經過分析器處理。默認情況下,Elasticsearch的標準分析器將拆分并小寫化索引的字符串。

主站蜘蛛池模板: 岑巩县| 娄烦县| 富锦市| 都江堰市| 张家口市| 镇沅| 阳山县| 高安市| 丰都县| 兴义市| 遂昌县| 蒙自县| 壤塘县| 水城县| 上犹县| 霍邱县| 应城市| 沾化县| 冀州市| 定日县| 大名县| 麟游县| 陆良县| 炉霍县| 屯门区| 舞钢市| 古田县| 沧州市| 奉新县| 卢龙县| 高邮市| 于都县| 浦江县| 游戏| 平泉县| 城固县| 晋中市| 竹北市| 威远县| 合肥市| 岳阳县|