亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

elasticsearch入門(mén)

2501207950 / 2566人閱讀

摘要:為表示只有一個(gè)實(shí)例。不會(huì)有數(shù)據(jù)丟失,所以搜索結(jié)果依然是完整的。高可用會(huì)弱化把想象成一個(gè)需要及時(shí)調(diào)查的警告。項(xiàng)目運(yùn)行起來(lái)后,可以發(fā)送寫(xiě)入和查詢(xún)的請(qǐng)求來(lái)測(cè)試功能的正確性。

這篇教程主要是對(duì)在入門(mén)的elasticsearch的一個(gè)記錄。

ES 集群安裝 安裝環(huán)境

基于 Dokcer ,單機(jī)安裝 Docker 版集群。使用版本如下:

Elasticsearch 5.3.2

Kibana 5.3.2

JDK 8

整個(gè)安裝步驟分成三部分:

安裝 ES 集群實(shí)例 elasticsearch001

安裝 ES 集群實(shí)例 elasticsearch002

安裝 Kibana 監(jiān)控

安裝 ES 集群實(shí)例

安裝過(guò)程中鏡像拉取事件過(guò)長(zhǎng),這里筆者將docker鏡像上傳到阿里的docker倉(cāng)庫(kù)中。

安裝 ES 集群實(shí)例 elasticsearch001:

docker run -d -p 9200:9200 
    -p 9300:9300 
    --name elasticsearch001 -h elasticsearch001 
    -e cluster.name=lookout-es 
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" 
    -e xpack.security.enabled=false 
    registry.cn-hangzhou.aliyuncs.com/dingwenjiang/elasticsearch:5.3.2

命令解釋如下:

docker run: 會(huì)啟動(dòng)一個(gè)容器實(shí)例,如果本地沒(méi)有對(duì)應(yīng)的鏡像會(huì)去遠(yuǎn)程registry上先下載鏡像。

-d: 表示容器運(yùn)行在后臺(tái)

-p [宿主機(jī)端口]:[容器內(nèi)端口]: 比如-p 9200:9200 表示把宿主機(jī)的9200端口映射到容器的9200端口

--name : 設(shè)置容器別名

-h : 指定容器的hostname

-e: 設(shè)置環(huán)境變量。這里關(guān)閉 x-pack 的安全校驗(yàn)功能,防止訪問(wèn)認(rèn)證。

通過(guò)curl http://localhost:9200/_cat/health?v=pretty來(lái)驗(yàn)證elasticsearch001是否啟動(dòng)成功,如下:

設(shè)置環(huán)境變量的時(shí)候,我們指定了-e cluster.name=lookout-es,用于后續(xù)關(guān)聯(lián)集群用。node為1 表示只有一個(gè)實(shí)例。默認(rèn) shards 分片為主備兩個(gè)。status 狀態(tài)是我們要關(guān)心的,狀態(tài)可能是下列三個(gè)值之一:

green:所有的主分片和副本分片都已分配,集群是 100% 可用的。

yellow:所有的主分片已經(jīng)分片了,但至少還有一個(gè)副本是缺失的。不會(huì)有數(shù)據(jù)丟失,所以搜索結(jié)果依然是完整的。高可用會(huì)弱化把 yellow 想象成一個(gè)需要及時(shí)調(diào)查的警告。

red:至少一個(gè)主分片(以及它的全部副本)都在缺失中。這意味著你在缺少數(shù)據(jù):搜索只能返回部分?jǐn)?shù)據(jù),而分配到這個(gè)分片上的寫(xiě)入請(qǐng)求會(huì)返回一個(gè)異常。

也可以訪問(wèn) http://localhost:9200/ ,可以看到成功運(yùn)行的案例,返回的 JSON 頁(yè)面。如圖:

繼續(xù)搭建elasticsearch002:

docker run -d -p 9211:9200 
       -p 9311:9300 --link elasticsearch001 
       --name elasticsearch002 
       -e cluster.name=lookout-es 
       -e ES_JAVA_OPTS="-Xms512m -Xmx512m" 
       -e xpack.security.enabled=false 
       -e discovery.zen.ping.unicast.hosts=elasticsearch001 
       registry.cn-hangzhou.aliyuncs.com/dingwenjiang/elasticsearch:5.3.2

啟動(dòng)elasticsearch002的時(shí)候增加了幾個(gè)參數(shù),

--link [其他容器名]:[在該容器中的別名]: 添加鏈接到另一個(gè)容器, 在本容器 hosts 文件中加入關(guān)聯(lián)容器的記錄。

-e: 設(shè)置環(huán)境變量。這里額外指定了 ES 集群的 cluster.name、ES 集群節(jié)點(diǎn)淡泊配置 discovery.zen.ping.unicast.hosts 設(shè)置為實(shí)例 elasticsearch001。

再次執(zhí)行curl http://localhost:9200/_cat/health?v=pretty,結(jié)果如圖:

對(duì)比上面檢查數(shù)值可以看出,首先集群狀態(tài)為 green , 所有的主分片和副本分片都已分配。你的集群是 100% 可用的。相應(yīng)的 node 、shards 都增加。

安裝 Kibana 監(jiān)控

接著安裝Kibana,對(duì)elasticsearch進(jìn)行監(jiān)控,安裝命令如下:

# 啟動(dòng)kibana
docker run -d --name kibana001 
       --link elasticsearch001 
       -e ELASTICSEARCH_URL=http://elasticsearch001:9200 
       -p 5601:5601
         registry.cn-hangzhou.aliyuncs.com/dingwenjiang/kibana:5.3.2

其中-e 設(shè)置環(huán)境變量。這里額外指定了 ELASTICSEARCH_URL 為搜索實(shí)例地址。打開(kāi)網(wǎng)頁(yè)訪問(wèn) 127.0.0.1:5601,默認(rèn)賬號(hào)為 elasti,密碼為 changeme。會(huì)出現(xiàn)如下的截圖:

Spring Boot 整合 Elasticsearch

這里只是簡(jiǎn)單整合下,開(kāi)發(fā)一個(gè)web接口,實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)以及查詢(xún)功能。開(kāi)發(fā)的思路還是傳統(tǒng)的三層架構(gòu),controller、service、dao,這里利用spring data來(lái)簡(jiǎn)化對(duì)es的curd操作。
項(xiàng)目的repo地址:https://github.com/warjiang/d...

整個(gè)項(xiàng)目的結(jié)構(gòu)如下所示:

入口文件為:Application類(lèi),其中也是大家熟悉的spring-boot的用法。
controller主要在api包下,這里會(huì)暴露出兩個(gè)API接口,分別是/api/contents用于寫(xiě)入內(nèi)容、/api/content/search用于查詢(xún)
service主要在service包下,與controller對(duì)應(yīng),需要實(shí)現(xiàn)寫(xiě)入和查詢(xún)兩個(gè)方法
dao主要在repository包下,繼承ElasticsearchRepository,實(shí)現(xiàn)curd。
這里需要注意的時(shí)候,讀寫(xiě)的bean用的是entity包下的ContentEntity,實(shí)際上services中操作的的bean是bean包下的ContentBean。
后續(xù)具體的實(shí)現(xiàn)在這里不再贅述。

項(xiàng)目運(yùn)行起來(lái)后,可以發(fā)送寫(xiě)入和查詢(xún)的請(qǐng)求來(lái)測(cè)試功能的正確性。
寫(xiě)入請(qǐng)求:可以通過(guò)curl 或者postman構(gòu)造一個(gè)請(qǐng)求如下:

POST /api/contents HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: application/json
Cache-Control: no-cache

[
    {
        "id":1,
        "title":"《見(jiàn)識(shí)》",
        "content":"摩根說(shuō):任意讓小錢(qián)從身邊溜走的人,一定留不住大錢(qián)",
        "type":1,
        "category":"文學(xué)",
        "read":999,
        "support":100
    },
    {
        "id":2,
        "title":"《態(tài)度》",
        "content":"人類(lèi)的幸福不是來(lái)自偶然的幸運(yùn),而是來(lái)自每天的小恩惠",
        "type":2,
        "category":"文學(xué)",
        "read":888,
        "support":88
    },
    {
        "id":3,
        "title":"《Java 編程思想》",
        "content":"Java 是世界上最diao的語(yǔ)言",
        "type":2,
        "category":"計(jì)算",
        "read":999,
        "support":100
    }
]

請(qǐng)求成功會(huì)返回如下所示:

{
    "code": 0,
    "message": "success",
    "data": true
}

寫(xiě)入成功后可以到kibana中查看寫(xiě)入結(jié)果,打開(kāi)網(wǎng)頁(yè)訪問(wèn) localhost:5601,在 Kibana 監(jiān)控中輸入需要監(jiān)控的 index name 為 content。如下圖,取消打鉤,然后進(jìn)入:

進(jìn)入后,會(huì)得到如圖所示的界面,里面羅列了該索引 content 下面所有字段:

打開(kāi)左側(cè) Discover 欄目,即可看到可視化的搜索界面及數(shù)據(jù):

隨便打開(kāi)一個(gè)json如下:

{
  "_index": "content",
  "_type": "content",
  "_id": "2",
  "_score": 1,
  "_source": {
    "id": 2,
    "title": "《態(tài)度》",
    "content": "人類(lèi)的幸福不是來(lái)自偶然的幸運(yùn),而是來(lái)自每天的小恩惠",
    "type": 2,
    "category": "文學(xué)",
    "read": 888,
    "support": 88
  }
}

_index 就是索引,用于區(qū)分文檔成組,即分到一組的文檔集合。索引,用于存儲(chǔ)文檔和使文檔可被搜索。

_type 就是類(lèi)型,用于區(qū)分索引中的文檔,即在索引中對(duì)數(shù)據(jù)邏輯分區(qū)。比如索引 project 的項(xiàng)目數(shù)據(jù),根據(jù)項(xiàng)目類(lèi)型 ui 項(xiàng)目、插畫(huà)項(xiàng)目等進(jìn)行區(qū)分。

_id 是該文檔的唯一標(biāo)示,代碼中我們一 ID 作為他的唯一標(biāo)示。

查詢(xún)請(qǐng)求:可以通過(guò)curl 或者postman構(gòu)造一個(gè)請(qǐng)求如下:

POST /api/content/search HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: application/json
Cache-Control: no-cache

{
    "searchContent":"Java",
    "type":2,
    "pageSize":3,
    "pageNumber":0
}

對(duì)應(yīng)結(jié)果如下:

{
    "code": 0,
    "message": "success",
    "data": {
        "pageNumber": 0,
        "pageSize": 3,
        "totalPage": 1,
        "totalCount": 1,
        "result": [
            {
                "id": 3,
                "title": "《Java 編程思想》",
                "content": "Java 是世界上最diao的語(yǔ)言",
                "type": 2,
                "category": "計(jì)算",
                "read": 999,
                "support": 100
            }
        ]
    }
}

這里根據(jù) searchContent 匹配短語(yǔ) +type 匹配單個(gè)字段,一起構(gòu)建了搜索語(yǔ)句。用于搜索出我們期待的結(jié)果,就是《Java 編程思想》。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/72971.html

相關(guān)文章

  • Elasticsearch Java High Level REST Client(入門(mén)

    摘要:入門(mén)本節(jié)描述從獲取工件到在應(yīng)用程序中使用它如何開(kāi)始使用高級(jí)別客戶(hù)端。保證能夠與運(yùn)行在相同主版本和大于或等于的次要版本上的任何節(jié)點(diǎn)通信。與具有相同的發(fā)布周期,將版本替換為想要的客戶(hù)端版本。 Java High Level REST Client 入門(mén) 本節(jié)描述從獲取工件到在應(yīng)用程序中使用它如何開(kāi)始使用高級(jí)別REST客戶(hù)端。 兼容性 Java High Level REST Client需...

    honmaple 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<