欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

什么是ElasticSearch

這篇文章主要講解了“什么是ElasticSearch”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“什么是ElasticSearch”吧!

創(chuàng)新互聯(lián)專注于黃岡網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供黃岡營銷型網(wǎng)站建設(shè),黃岡網(wǎng)站制作、黃岡網(wǎng)頁設(shè)計、黃岡網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造黃岡網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供黃岡網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

(一)介紹

ElasticSearch的目標(biāo)就是實現(xiàn)搜索。在數(shù)據(jù)量少的時候,我們可以通過索引去搜索關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù),但是如果數(shù)據(jù)量很大,搜索的效率就會很低,這個時候我們就需要一種分布式的搜索引擎。Elasticsearch是一個基于Lucene的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。

ES主要用于全文檢索、結(jié)構(gòu)化搜索以及分析。ES的應(yīng)用十分廣泛,比如維基百科、Github等都使用ES實現(xiàn)搜索。

(二)核心概念理解

2.1 數(shù)據(jù)結(jié)構(gòu)

ES既然是用來搜索的,那么它必然也需要存儲數(shù)據(jù)。在MySQL等關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)的存儲遵循下面的邏輯:

一個數(shù)據(jù)庫(database)中有多個表(tables),每個表有多行數(shù)據(jù)(rows),每一行數(shù)據(jù)由多個字段(columns)組成。

ES中的存儲是這樣的:

一個索引(indeces)相當(dāng)于一個數(shù)據(jù)庫(database),每個索引中有多個類型types(相當(dāng)于表結(jié)構(gòu)),每個索引中有多個documents(相當(dāng)于行),每個documents由多個fields組成(相當(dāng)于字段)。

你可以把ES理解為他是一個面向文檔的數(shù)據(jù)庫。下面用一張圖描述ES和關(guān)系型數(shù)據(jù)庫之間的相似之處:

什么是ElasticSearch

值得注意的是,在ES7.x版本中,types將慢慢被遺棄,在8.x版本中,types將會徹底棄用。

2.2 索引(indeces)和文檔(documents)

ES中的索引和Mysql中的索引不是同一種東西,ES中的索引是一個文檔的集合,索引就是一個數(shù)據(jù)庫。

前面說了ES是面向文檔的,文檔是ES中最重要的單位,文檔就是一條條的數(shù)據(jù)。文檔中有幾個重要的概念:

1、一篇文檔中包含多個key:value

2、文檔其實就是一個JSON字符串

2.3 分片

什么是ElasticSearch

ES是一個分布式搜索引擎,分片就是把一堆數(shù)據(jù)分布到多個分片中。而索引是對每個分片的一個備份,這些副本同樣能處理查詢請求。

現(xiàn)在假設(shè)集群有兩個node節(jié)點,設(shè)置分片數(shù)是5個,副本數(shù)是1個,那么數(shù)據(jù)存儲結(jié)構(gòu)將變成下面這樣,可以保證副本和分片在不同的節(jié)點上:

什么是ElasticSearch

2.4 倒排索引

為什么ES的搜索這么快,和其中所使用的倒排索引也有一定的關(guān)系。倒排索引建立的是分詞和文檔之間的映射關(guān)系。下面通過一個簡單的例子來講解一下什么是倒排索引

什么是ElasticSearch

原來的數(shù)據(jù)中我們通過文檔ID去關(guān)聯(lián)標(biāo)簽,但是在查詢時就需要遍歷所有文檔。通過倒排索引,我們可以通過關(guān)鍵詞來找到最匹配的文檔。

(三)ES的基本操作

ES是基于Restful風(fēng)格進(jìn)行操作的,因此對于習(xí)慣了寫crud的程序員來說,ES很容易上手。ES的操作可以使用Kibana,也可以使用Postman直接調(diào)用,因為歸根結(jié)底它就是一個restful的操作。我這里使用Idea的ES插件直接調(diào)用。

3.1 創(chuàng)建文檔

PUT http://ip:port/索引名/類型名/文檔id

{

    "key":"value"

}

因為類型名在后續(xù)的版本中將會被刪除,這里可以用_doc代表默認(rèn)類型:

PUT http://ip:port/索引名/_doc/文檔id

下面給出操作截圖

什么是ElasticSearch

通過put創(chuàng)建一個索引之后,我們可以在head中看到對應(yīng)的數(shù)據(jù)

什么是ElasticSearch

3.2 創(chuàng)建帶有數(shù)據(jù)類型的索引

3.1中創(chuàng)建數(shù)據(jù)時,沒有指定具體的數(shù)據(jù)類型,我們當(dāng)然也可以為索引指定數(shù)據(jù)類型

PUT http://ip:port/索引名

參數(shù)示例:

{

  "mappings": {

    "properties": {

      "name": {

        "type": "text"

      },

      "address": {

        "type": "text"

      }

    }

  }

}

ES中的核心數(shù)據(jù)類型如下:

(1)字符串類型: text, keyword

(2)數(shù)字類型:long, integer, short, byte, double, float, half_float, scaled_float

(3)日期:date

(4)日期 納秒:date_nanos

(5)布爾型:boolean

(6)Binary:binary

(7)Range: integer_range, float_range, long_range, double_range, date_range

3.3 查看索引或者文檔的數(shù)據(jù)

通過GET請求可以查看索引以及文檔的信息:

GET http://ip:port/索引名   #查看索引

GET http://ip:port/索引名/類型名/文檔ID  #查看文檔

3.4 修改數(shù)據(jù)

修改數(shù)據(jù)和創(chuàng)建數(shù)據(jù)一樣,通過PUT操作就會更新原來的數(shù)據(jù):

PUT http://ip:port/索引名/類型名/文檔id

{

    "key":"value"

}

如果是修改的話,響應(yīng)結(jié)果中的version就會增加。

另外一種方法是使用Post請求:

POST http://ip:port/索引名/類型名/文檔id/_update

參數(shù)實例:

{

  "doc": {

    "name": "javayz4"

  }

}

更推薦使用這種方式,如果使用PUT方法忘了加某個key,更新就會變成新增

3.5 刪除數(shù)據(jù)

通過DELETE的方式刪除數(shù)據(jù)

DELETE http://ip:port/索引名/類型名/文檔id  #刪除具體的文檔

DELETE http://ip:port/索引名  #刪除索引

(四)ES的搜索操作

ES最重要的就是它的搜索操作了。

4.1 簡單搜索

直接將搜索的參數(shù)帶到鏈接中:

GET http://ip:port/索引名/_search?q=key:value

結(jié)果如下:

什么是ElasticSearch

4.2 通過param傳遞參數(shù)

除了將參數(shù)放到鏈接當(dāng)中,還可以將參數(shù)通過JSON請求體的方式傳遞,其中from和size是分頁的參數(shù)query中傳遞查詢條件_source表示結(jié)果中要展示的列,不寫就表示展示所有。

GET http://ip:port/索引名/_search

參數(shù)示例:

{

  "from": 0,

  "size": 20,

  "query": {

    "match": {

      "name": "javayz2"

    }

  },

  "_source": ["name","address"]

}

除了上面示例中的這些參數(shù)之外,還有很多參數(shù)可以使用,比如排序

"sort": [

  {

    "age": {

      "order": "desc"

    }

  }

]

多條件查詢:must表示下面的兩個條件都要滿足,還可以填should,表示任意滿足其中一個條件即可,或者是must_not,表示must的相反值

"query": {

    "bool": {

      "must": [

        {

          "match": {

            "name": "javayz"

          }

        },

        {

          "match": {

            "address": "hz"

          }

        }

      ]

    }

}

如果你的數(shù)據(jù)中存在集合,可以通過空格對多個條件進(jìn)行查詢:

什么是ElasticSearch

查詢過程中還支持高亮查詢

"highlight":{

  "pre_tags": "<em>",

  "post_tags": "</em>",

  "fields": {

    "name": {}

  }

}

什么是ElasticSearch

(五)分詞器

所謂分詞器,就是將一段話分成一個個關(guān)鍵字,搜索時就按照這些關(guān)鍵字進(jìn)行搜索。比較好用的分詞器有中文的IK分詞器。

 基本使用

給出下載鏈接:https://github.com/medcl/elasticsearch-analysis-ik/releases

下載和自己ES相同的版本,在plugin目錄下新建一個ik文件夾,將下載的文件解壓到ik目錄下,重新啟動即可。

IK分詞器提供了兩種算法:

1、ik_smart:最少切分

2、ik_max_word:最細(xì)粒劃分

首先最少切分是根據(jù)字典給出最少的切分:

什么是ElasticSearch

ik_max_word是最細(xì)粒劃分,他會給出最多的結(jié)果:

{

  "analyzer": "ik_max_word",

  "text": "我是Java工程師"

}

結(jié)果:

{

  "tokens": [

    {

      "token": "我",

      "start_offset": 0,

      "end_offset": 1,

      "type": "CN_CHAR",

      "position": 0

    },

    {

      "token": "是",

      "start_offset": 1,

      "end_offset": 2,

      "type": "CN_CHAR",

      "position": 1

    },

    {

      "token": "java",

      "start_offset": 2,

      "end_offset": 6,

      "type": "ENGLISH",

      "position": 2

    },

    {

      "token": "工程師",

      "start_offset": 6,

      "end_offset": 9,

      "type": "CN_WORD",

      "position": 3

    },

    {

      "token": "工程",

      "start_offset": 6,

      "end_offset": 8,

      "type": "CN_WORD",

      "position": 4

    },

    {

      "token": "師",

      "start_offset": 8,

      "end_offset": 9,

      "type": "CN_CHAR",

      "position": 5

    }

  ]

}

感謝各位的閱讀,以上就是“什么是ElasticSearch”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對什么是ElasticSearch這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

網(wǎng)站標(biāo)題:什么是ElasticSearch
分享地址:http://www.chinadenli.net/article14/piihde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站搜索引擎優(yōu)化網(wǎng)站營銷虛擬主機(jī)網(wǎng)站內(nèi)鏈動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)