日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

elasticsearch索引和映射

發(fā)布時(shí)間:2024/9/5 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elasticsearch索引和映射 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 1. elasticsearch如何實(shí)現(xiàn)搜索
    • 1.1 搜索實(shí)例
    • 1.2 es中數(shù)據(jù)的類型
    • 1.3 倒排索引
    • 1.4 分析與分析器
      • 1.4.1 什么是分析器
      • 1.4.2 內(nèi)置分析器種類
      • 1.4.3 分析行為(開篇實(shí)例解答)
      • 1.4.4 測(cè)試分析器
      • 1.4.5 指定分析器
    • 1.5 映射
      • 1.5.1 簡(jiǎn)單核心域類型
      • 1.5.2 復(fù)雜核心域類型
  • 2. 索引
    • 2.1 什么是索引
    • 2.2 創(chuàng)建一個(gè)默認(rèn)配置的索引
    • 2.3 索引的設(shè)置(settings部分)
    • 2.4 索引的映射配置(mappings部分)
      • 2.4.1 映射寫法
      • 2.4.2 類型
      • 2.4.3 根對(duì)象
      • 2.4.4 動(dòng)態(tài)映射
      • 2.4.5 自定義動(dòng)態(tài)映射
      • 2.4.6 缺省映射
    • 2.5 索引的管理
      • 2.5.1 創(chuàng)建索引
      • 2.5.2 查看索引
      • 2.5.3 刪除索引
      • 2.5.4 重構(gòu)索引

1. elasticsearch如何實(shí)現(xiàn)搜索

我們使用sql數(shù)據(jù)庫(kù)的時(shí)候,要先創(chuàng)建數(shù)據(jù)庫(kù),然后創(chuàng)建表,之后才可以將數(shù)據(jù)存入到表中,這個(gè)表規(guī)定了數(shù)據(jù)的構(gòu)成結(jié)構(gòu)。雖然elasticsearch是一個(gè)無(wú)模式的搜索引擎并且可以自動(dòng)匹配數(shù)據(jù)的結(jié)構(gòu)(ES 會(huì)盡量根據(jù) JSON 源數(shù)據(jù)的基礎(chǔ)類型猜測(cè)你想要的字段類型映射),但是我們認(rèn)為人為定義和控制數(shù)據(jù)結(jié)構(gòu)是更好的方式。所以我們有必要學(xué)習(xí)如何創(chuàng)建索引和如何創(chuàng)建映射。

1.1 搜索實(shí)例

在mysql中我們查詢created_at = '2014-09-15'那么該created_at字段只有是2014-09-15和不是兩種情況,但是在elsaticsearch中則很有趣,看下下面的例子

索引中有12條推文,其中只有一條包含日期 2014-09-15 ,但是看一看下面查詢命中的 總數(shù) (total):

GET /_search?q=2014 # 12 results GET /_search?q=2014-09-15 # 12 results ! GET /_search?q=date:2014-09-15 # 1 result GET /_search?q=date:2014 # 0 results !

分析:

  • 第一個(gè)和第二個(gè)搜索是全文搜索,起作用的是 _all字段 ,這里都返回了12條推文,但是我們提到了只有一條包含了日期 2014-09-15,為什么12條數(shù)據(jù)都能匹配?

  • 第三和第四條數(shù)據(jù)時(shí)在 data字段 搜索,不難理解,第三條數(shù)據(jù)一條命中,第四條只是個(gè)年份,不可能有匹配項(xiàng)。

為什么會(huì)出現(xiàn)上面的結(jié)果呢,全文搜索好像有點(diǎn)不一般啊,推測(cè)起來(lái),這可能是數(shù)據(jù)在 _all 字段與 date 字段的索引方式不同。帶著這個(gè)疑問(wèn)我們一起分析下。

可以查看下索引的類型映射

GET /gb/_mapping/tweet

結(jié)果如下

{"gb": {"mappings": {"tweet": {"properties": {"date": {"type": "date","format": "strict_date_optional_time||epoch_millis"},"name": {"type": "string"},"tweet": {"type": "string"},"user_id": {"type": "long"}}}}} }

盡管我們沒(méi)有定義該索引的映射,但是es動(dòng)態(tài)為我們產(chǎn)生了一個(gè)映射,這個(gè)響應(yīng)告訴我們 date 字段被認(rèn)為是 date 類型的。由于 _all 是默認(rèn)字段,所以沒(méi)有提及它。但是我們知道 _all 字段是 string 類型的。所以 date 字段和 string 字段 索引方式不同,數(shù)據(jù)類型不同,因此搜索結(jié)果也不一樣,但這只是表象,深層次原因呢?

1.2 es中數(shù)據(jù)的類型

Elasticsearch 中的數(shù)據(jù)可以概括的分為兩類:『精確值』和 『全文』。

?『精確值』 如它們聽(tīng)起來(lái)那樣精確。例如日期或者用戶 ID,但字符串也可以表示精確值,例如用戶名或郵箱地址。對(duì)于精確值來(lái)講,Foo 和 foo 是不同的,2014 和 2014-09-15 也是不同的。

精確值很容易查詢。結(jié)果是二進(jìn)制的:要么匹配查詢,要么不匹配。這種查詢很容易用 SQL 表示:

WHERE name = "John Smith"AND user_id = 2AND date > "2014-09-15"

?『全文』 是指文本數(shù)據(jù)(通常以人類容易識(shí)別的語(yǔ)言書寫),例如一個(gè)推文的內(nèi)容或一封郵件的內(nèi)容。

查詢?nèi)臄?shù)據(jù)要微妙的多。我們問(wèn)的不只是“這個(gè)文檔匹配查詢嗎”,而是“該文檔匹配查詢的程度有多大?”。

我們很少對(duì)全文類型的域做精確匹配。相反,我們希望在文本類型的域中搜索。不僅如此,我們還希望搜索能夠理解我們的 意圖

  • 搜索 UK ,會(huì)返回包含 United Kindom 的文檔。
  • 搜索 jump ,會(huì)匹配 jumped , jumps , jumping ,甚至是 leap 。
  • 搜索 johnny walker 會(huì)匹配 Johnnie Walker , johnnie depp 應(yīng)該匹配 Johnny Depp 。
  • fox news hunting 應(yīng)該返回福克斯新聞( Foxs News )中關(guān)于狩獵的故事,同時(shí), fox hunting news 應(yīng)該返回關(guān)于獵狐的故事。

es是如何做到以上的想法的呢?

Elasticsearch 首先會(huì) 分析文檔,之后根據(jù)結(jié)果創(chuàng)建 倒排索引 ,接下來(lái)一起討論分析過(guò)程和倒排索引

1.3 倒排索引

一個(gè)倒排索引由文檔中所有不重復(fù)詞的列表構(gòu)成,對(duì)于其中每個(gè)詞,有一個(gè)包含它的文檔列表。

例如,假設(shè)我們有兩個(gè)文檔,每個(gè)文檔的 content 域包含如下內(nèi)容:

The quick brown fox jumped over the lazy dog Quick brown foxes leap over lazy dogs in summer

為了創(chuàng)建倒排索引,我們首先將每個(gè)文檔的 content 域拆分成單獨(dú)的 詞(我們稱它為 詞條 或 tokens ),創(chuàng)建一個(gè)包含所有不重復(fù)詞條的排序列表,然后列出每個(gè)詞條出現(xiàn)在哪個(gè)文檔。結(jié)果如下所示:

Term Doc_1 Doc_2 ------------------------- Quick | | X The | X | brown | X | X dog | X | dogs | | X fox | X | foxes | | X in | | X jumped | X | lazy | X | X leap | | X over | X | X quick | X | summer | | X the | X | ------------------------

現(xiàn)在,如果我們想搜索 quick brown ,我們只需要查找包含每個(gè)詞條的文檔:

Term Doc_1 Doc_2 ------------------------- brown | X | X quick | X | ------------------------ Total | 2 | 1

兩個(gè)文檔都匹配,但是第一個(gè)文檔比第二個(gè)匹配度更高。如果我們使用僅計(jì)算匹配詞條數(shù)量的簡(jiǎn)單 相似性算法 ,那么,我們可以說(shuō),對(duì)于我們查詢的相關(guān)性來(lái)講,第一個(gè)文檔比第二個(gè)文檔更佳。

但是,我們目前的倒排索引有一些問(wèn)題:

  • Quick 和 quick 以獨(dú)立的詞條出現(xiàn),然而用戶可能認(rèn)為它們是相同的詞。
  • fox 和 foxes 非常相似, 就像 dog 和 dogs ;他們有相同的詞根。
  • jumped 和 leap, 盡管沒(méi)有相同的詞根,但他們的意思很相近。他們是同義詞。

使用前面的索引搜索 +Quick +fox 不會(huì)得到任何匹配文檔。(記住,+ 前綴表明這個(gè)詞必須存在。)只有同時(shí)出現(xiàn) Quick 和 fox 的文檔才滿足這個(gè)查詢條件,但是第一個(gè)文檔包含 quick fox ,第二個(gè)文檔包含 Quick foxes 。

我們的用戶可以合理的期望兩個(gè)文檔與查詢匹配。我們可以做的更好。

如果我們將詞條規(guī)范為標(biāo)準(zhǔn)模式,那么我們可以找到與用戶搜索的詞條不完全一致,但具有足夠相關(guān)性的文檔。例如:

  • Quick 可以小寫化為 quick 。
  • foxes 可以 詞干提取 --變?yōu)樵~根的格式-- 為 fox 。類似的, dogs 可以為提取為 dog 。
  • jumped 和 leap 是同義詞,可以索引為相同的單詞 jump 。
    現(xiàn)在索引看上去像這樣:
Term Doc_1 Doc_2 ------------------------- brown | X | X dog | X | X fox | X | X in | | X jump | X | X lazy | X | X over | X | X quick | X | X summer | | X the | X | X ------------------------

這還遠(yuǎn)遠(yuǎn)不夠。我們搜索 +Quick +fox 仍然 會(huì)失敗,因?yàn)樵谖覀兊乃饕?#xff0c;已經(jīng)沒(méi)有 Quick 了。但是,如果我們對(duì)搜索的字符串使用與 content 域相同的標(biāo)準(zhǔn)化規(guī)則,查詢字符串就會(huì)變成查詢 +quick +fox ,這樣兩個(gè)文檔都會(huì)匹配!

注意:這非常重要。我們要用相同標(biāo)準(zhǔn)處理兩部分的數(shù)據(jù) 查詢字符串索引文本 ,你只能搜索在索引中出現(xiàn)的詞條,所以索引文本和查詢字符串必須標(biāo)準(zhǔn)化為相同的格式。

1.4 分析與分析器

1.4.1 什么是分析器

首先,將一塊文本分成適合于倒排索引的獨(dú)立的 詞條 ,
之后,將這些詞條統(tǒng)一化為標(biāo)準(zhǔn)格式以提高它們的“可搜索性”,或者 recall
分析器執(zhí)行上面的工作。 分析器 實(shí)際上是將三個(gè)功能封裝到了一個(gè)包里

  • 字符過(guò)濾器

首先,字符串按順序通過(guò)每個(gè) 字符過(guò)濾器 。字符過(guò)濾器 用來(lái) 整理 一個(gè)尚未被分詞的字符串。例如,如果我們的文本是HTML格式的,它會(huì)包含像 <p> 或者 <div> 這樣的HTML標(biāo)簽,這些標(biāo)簽是我們不想索引的。我們可以使用 html清除 字符過(guò)濾器 來(lái)移除掉所有的HTML標(biāo)簽,并且像把 &Aacute; 轉(zhuǎn)換為相對(duì)應(yīng)的Unicode字符 á 這樣,轉(zhuǎn)換HTML實(shí)體。

一個(gè)分析器可能有0個(gè)或者多個(gè)字符過(guò)濾器。

  • 分詞器

其次,字符串被 分詞器 分為單個(gè)的詞條。 分詞器把字符串分解成單個(gè)詞條或者詞匯單元。 標(biāo)準(zhǔn) 分析器 把一個(gè)字符串根據(jù)單詞邊界分解成單個(gè)詞條,并且移除掉大部分的標(biāo)點(diǎn)符號(hào),然而還有其他不同行為的分詞器存在。

例如, 關(guān)鍵詞 分詞器 完整地輸出 接收到的同樣的字符串,并不做任何分詞。 空格 分詞器 只根據(jù)空格分割文本 。 正則 分詞器 根據(jù)匹配正則表達(dá)式來(lái)分割文本 。

一個(gè)分析器 必須 有一個(gè)唯一的分詞器。

  • 詞單元過(guò)濾器

最后,詞條按順序通過(guò)每個(gè) token 過(guò)濾器 。這個(gè)過(guò)程可能會(huì)改變?cè)~條(例如,小寫化 Quick ),刪除詞條(例如, 像 a,and,the 等無(wú)用詞),或者增加詞條(例如,像 jump 和 leap 這種同義詞)。

Elasticsearch提供了開箱即用的字符過(guò)濾器、分詞器和詞單元過(guò)濾器。 這些可以組合起來(lái)形成自定義的分析器以用于不同的目的。

1.4.2 內(nèi)置分析器種類

但是, Elasticsearch還附帶了可以直接使用的預(yù)包裝的分析器。 接下來(lái)我們會(huì)列出最重要的分析器。為了證明它們的差異,我們看看每個(gè)分析器會(huì)從下面的字符串得到哪些詞條:

"Set the shape to semi-transparent by calling set_trans(5)"
  • 標(biāo)準(zhǔn)分析器

標(biāo)準(zhǔn)分析器是Elasticsearch默認(rèn)使用的分析器。它是分析各種語(yǔ)言文本最常用的選擇。它根據(jù) Unicode 聯(lián)盟 定義的 單詞邊界 劃分文本。刪除絕大部分標(biāo)點(diǎn)。最后,將詞條小寫。它會(huì)產(chǎn)生

set, the, shape, to, semi, transparent, by, calling, set_trans, 5
  • 簡(jiǎn)單分析器

簡(jiǎn)單分析器在任何不是字母的地方分隔文本,將詞條小寫。它會(huì)產(chǎn)生

set, the, shape, to, semi, transparent, by, calling, set, trans
  • 空格分析器

空格分析器在空格的地方劃分文本。它會(huì)產(chǎn)生

Set, the, shape, to, semi-transparent, by, calling, set_trans(5)
  • 語(yǔ)言分析器

特定語(yǔ)言分析器可用于 很多語(yǔ)言。它們可以考慮指定語(yǔ)言的特點(diǎn)。例如, 英語(yǔ) 分析器附帶了一組英語(yǔ)無(wú)用詞(常用單詞,例如 and 或者 the ,它們對(duì)相關(guān)性沒(méi)有多少影響),它們會(huì)被刪除。 由于理解英語(yǔ)語(yǔ)法的規(guī)則,這個(gè)分詞器可以提取英語(yǔ)單詞的 詞干 。

英語(yǔ) 分詞器會(huì)產(chǎn)生下面的詞條:

set, shape, semi, transpar, call, set_tran, 5

注意看 transparent、 calling 和 set_trans 已經(jīng)變?yōu)樵~根格式。

1.4.3 分析行為(開篇實(shí)例解答)

當(dāng)我們 索引 一個(gè)文檔,它的全文域被分析成詞條以用來(lái)創(chuàng)建倒排索引。 但是,當(dāng)我們?cè)谌挠?搜索 的時(shí)候,我們需要將查詢字符串通過(guò) 相同的分析過(guò)程 ,以保證我們搜索的詞條格式與索引中的詞條格式一致。

全文查詢,理解每個(gè)域是如何定義的,因此它們可以做 正確的事:

  • 當(dāng)你查詢一個(gè) 全文 域時(shí), 會(huì)對(duì)查詢字符串應(yīng)用相同的分析器,以產(chǎn)生正確的搜索詞條列表。
  • 當(dāng)你查詢一個(gè) 精確值 域時(shí),不會(huì)分析查詢字符串, 而是搜索你指定的精確值。

現(xiàn)在你可以理解在 開始章節(jié) 的查詢?yōu)槭裁捶祷啬菢拥慕Y(jié)果:

  • date 域包含一個(gè)精確值:單獨(dú)的詞條 2014-09-15。
  • _all 域是一個(gè)全文域,所以分詞進(jìn)程將日期(2014-09-15)轉(zhuǎn)化為三個(gè)詞條: 2014, 09, 和 15。
    當(dāng)我們?cè)?_all 域查詢 2014,它匹配所有的12條推文,因?yàn)樗鼈兌己?2014 :
GET /_search?q=2014 # 12 results

當(dāng)我們?cè)?_all 域查詢 2014-09-15,它首先分析查詢字符串,產(chǎn)生匹配 2014, 09, 或 15 中 任意 詞條的查詢。這也會(huì)匹配所有12條推文,因?yàn)樗鼈兌己?2014 :

GET /_search?q=2014-09-15 # 12 results !

當(dāng)我們?cè)?date 域查詢 2014-09-15,它尋找 精確 日期,只找到一個(gè)推文:

GET /_search?q=date:2014-09-15 # 1 result

當(dāng)我們?cè)?date 域查詢 2014,它找不到任何文檔,因?yàn)闆](méi)有文檔含有這個(gè)精確日志:

GET /_search?q=date:2014 # 0 results !

1.4.4 測(cè)試分析器

可以使用 analyze API 來(lái)看文本是如何被分析的。在消息體里,指定分析器和要分析的文本:

GET /_analyze {"analyzer": "standard","text": "Text to analyze" }

結(jié)果

{"tokens": [{"token": "text","start_offset": 0,"end_offset": 4,"type": "<ALPHANUM>","position": 1},{"token": "to","start_offset": 5,"end_offset": 7,"type": "<ALPHANUM>","position": 2},{"token": "analyze","start_offset": 8,"end_offset": 15,"type": "<ALPHANUM>","position": 3}] }

token 是實(shí)際存儲(chǔ)到索引中的詞條。 position 指明詞條在原始文本中出現(xiàn)的位置。 start_offset 和 end_offset 指明字符在原始字符串中的位置。

1.4.5 指定分析器

當(dāng)Elasticsearch在你的文檔中檢測(cè)到一個(gè)新的字符串域 ,它會(huì)自動(dòng)設(shè)置其為一個(gè)全文 字符串 域,使用 標(biāo)準(zhǔn) 分析器對(duì)它進(jìn)行分析。

你不希望總是這樣??赡苣阆胧褂靡粋€(gè)不同的分析器,適用于你的數(shù)據(jù)使用的語(yǔ)言。有時(shí)候你想要一個(gè)字符串域就是一個(gè)字符串域--不使用分析,直接索引你傳入的精確值,例如用戶ID或者一個(gè)內(nèi)部的狀態(tài)域或標(biāo)簽。

要做到指定數(shù)據(jù)類型和指定鎖使用的分析器,我們必須手動(dòng)指定這些域的映射。關(guān)于如何配置和指定分析器,將在索引的構(gòu)建中講解

1.5 映射

上面已經(jīng)知道了倒排索引,分析和分析器內(nèi)容,那么如何才能夠是es實(shí)現(xiàn)以上特性呢,就是編寫映射規(guī)則,我們配置映射的時(shí)候會(huì)規(guī)定數(shù)據(jù)的類型、是否使用分析器、使用何種分析器等內(nèi)容。

為了能夠?qū)r(shí)間域視為時(shí)間,數(shù)字域視為數(shù)字,字符串域視為全文或精確值字符串, Elasticsearch 需要知道每個(gè)域中數(shù)據(jù)的類型。映射定義了類型中的域,每個(gè)域的數(shù)據(jù)類型,以及Elasticsearch如何處理這些域。映射也用于配置與類型有關(guān)的元數(shù)據(jù)。我們這里先了解下映射的概念,下一章節(jié)會(huì)講解如何編寫映射。

1.5.1 簡(jiǎn)單核心域類型

簡(jiǎn)單域類型:

  • 字符串: string
  • 整數(shù) : byte, short, integer, long
  • 浮點(diǎn)數(shù): float, double
  • 布爾型: boolean
  • 日期: date

如果沒(méi)有定義數(shù)據(jù)的類型,也沒(méi)有使用定義動(dòng)態(tài)映射規(guī)則,那么會(huì)通過(guò)JSON中基本數(shù)據(jù)類型,嘗試猜測(cè)域類型,使用如下規(guī)則:

JSON type域 type
布爾型: true 或者 falseboolean
整數(shù): 123long
浮點(diǎn)數(shù): 123.45double
字符串,有效日期: 2014-09-15date
字符串: foo barstring

1.5.2 復(fù)雜核心域類型

除了簡(jiǎn)單標(biāo)量數(shù)據(jù)類型, JSON 還有 null 值,數(shù)組,和對(duì)象,這些 Elasticsearch 都是支持的。

  • 多值域

對(duì)于數(shù)組,沒(méi)有特殊的映射需求,在es中沒(méi)有專門的數(shù)組類型。任何域都可以包含0、1或者多個(gè)值,就像全文域分析得到多個(gè)詞條。

數(shù)組中所有的值必須是相同數(shù)據(jù)類型的 。你不能將日期和字符串混在一起。如果你通過(guò)索引數(shù)組來(lái)創(chuàng)建新的域,Elasticsearch 會(huì)用數(shù)組中第一個(gè)值的數(shù)據(jù)類型作為這個(gè)域的 類型 。

數(shù)據(jù):

{ "tag": [ "search", "nosql" ]}
  • 空域

當(dāng)然,數(shù)組可以為空。 這相當(dāng)于存在零值。 事實(shí)上,在 Lucene 中是不能存儲(chǔ) null 值的,所以我們認(rèn)為存在 null 值的域?yàn)榭沼颉?/p>

下面三種域被認(rèn)為是空的,它們將不會(huì)被索引:

"null_value": null, "empty_array": [], "array_with_null_value": [ null ]
  • 多層級(jí)對(duì)象

數(shù)據(jù):

{"tweet": "Elasticsearch is very flexible","user": {"id": "@johnsmith","gender": "male","age": 26,"name": {"full": "John Smith","first": "John","last": "Smith"}} }

映射:

{"gb": {"tweet": { "properties": {"tweet": { "type": "string" },"user": { "type": "object","properties": {"id": { "type": "string" },"gender": { "type": "string" },"age": { "type": "long" },"name": { "type": "object","properties": {"full": { "type": "string" },"first": { "type": "string" },"last": { "type": "string" }}}}}}}} }

type 映射(tweet)只是一種特殊的 對(duì)象 映射,我們稱之為 根對(duì)象。

Lucene 不理解內(nèi)部對(duì)象。 Lucene 文檔是由一組鍵值對(duì)列表組成的。為了能讓 Elasticsearch 有效地索引內(nèi)部類,它把我們的文檔轉(zhuǎn)化成這樣:

{"tweet": [elasticsearch, flexible, very],"user.id": [@johnsmith],"user.gender": [male],"user.age": [26],"user.name.full": [john, smith],"user.name.first": [john],"user.name.last": [smith] }

內(nèi)部域 可以通過(guò)名稱引用(例如, first )。為了區(qū)分同名的兩個(gè)域,我們可以使用全 路徑 (例如, user.name.first ) 或 type 名加路徑( tweet.user.name.first )。

  • 內(nèi)部對(duì)象數(shù)組

假設(shè)我們有個(gè) followers 數(shù)組:

{"followers": [{ "age": 35, "name": "Mary White"},{ "age": 26, "name": "Alex Jones"},{ "age": 19, "name": "Lisa Smith"}] }

這個(gè)文檔會(huì)像我們之前描述的那樣被扁平化處理,結(jié)果如下所示:

{"followers.age": [19, 26, 35],"followers.name": [alex, jones, lisa, smith, mary, white] }

{age: 35} 和 {name: Mary White} 之間的相關(guān)性已經(jīng)丟失了,因?yàn)槊總€(gè)多值域只是一包無(wú)序的值,而不是有序數(shù)組。這足以讓我們問(wèn),“有一個(gè)26歲的追隨者?”

但是我們不能得到一個(gè)準(zhǔn)確的答案:“是否有一個(gè)26歲 名字叫 Alex Jones 的追隨者?”

相關(guān)內(nèi)部對(duì)象被稱為 nested 嵌套對(duì)象,可以回答上面的查詢,這里暫不做研究。

2. 索引

2.1 什么是索引

索引是es中存儲(chǔ)數(shù)據(jù)的一種邏輯,大部分人對(duì)mysql會(huì)更熟悉一些,可以對(duì)比下

(1)關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)(DataBase),等價(jià)于ES中的索引(Index)

(2)一個(gè)數(shù)據(jù)庫(kù)下面有N張表(Table),等價(jià)于1個(gè)索引Index下面有N多類型(Type)

(3)一個(gè)數(shù)據(jù)庫(kù)表(Table)下的數(shù)據(jù)由多行(ROW)多列(column,屬性)組成,等價(jià)于1個(gè)Type由多個(gè)文檔(Document)和多Field組成。

(4)在一個(gè)關(guān)系型數(shù)據(jù)庫(kù)里面,schema定義了表、每個(gè)表的字段,還有表和字段之間的關(guān)系。 與之對(duì)應(yīng)的,在ES中:Mapping定義索引下的Type的字段處理規(guī)則,即索引如何建立、索引類型、是否保存原始索引JSON文檔、是否壓縮原始JSON文檔、是否需要分詞處理、如何進(jìn)行分詞處理等。

2.2 創(chuàng)建一個(gè)默認(rèn)配置的索引

curl -XPOST 'http://localhost:9200/posts'

以上索引采用的是默認(rèn)配置,新的字段通過(guò)『動(dòng)態(tài)映射』的方式被添加到類型映射。當(dāng)然我們可以做更多的控制,手動(dòng)創(chuàng)建索引,在請(qǐng)求體里傳入設(shè)置或類型映射:

PUT /my_index {"settings": { ... any settings ... },"mappings": {"type_one": { ... any mappings ... },"type_two": { ... any mappings ... },...} }

上面分為兩部分,第一部分是settings,第二部分是mappings

2.3 索引的設(shè)置(settings部分)

可以通過(guò)修改配置來(lái)自定義索引行為,但是除非你理解這些配置的作用并且知道為什么要去修改,否則不要隨意修改,Elasticsearch 已經(jīng)提供了優(yōu)化好的默認(rèn)配置。

配置:

? 1、number_of_shards

每個(gè)索引的主分片數(shù),默認(rèn)值是 5 。這個(gè)配置在索引創(chuàng)建后不能修改。

? 2、number_of_replicas

每個(gè)主分片的副本數(shù),默認(rèn)值是 1 。對(duì)于活動(dòng)的索引庫(kù),這個(gè)配置可以隨時(shí)修改。

例如,我們可以創(chuàng)建只有 一個(gè)主分片,沒(méi)有副本的小索引:

PUT /my_temp_index {"settings": {"number_of_shards" : 1,"number_of_replicas" : 0} }

? 3、配置分析器

第三個(gè)重要的索引設(shè)置是 analysis 部分, 用來(lái)配置已存在的分析器或針對(duì)你的索引創(chuàng)建新的自定義分析器,后面編寫映射的

前面我們已經(jīng)介紹了一些內(nèi)置的分析器,用于將全文字符串轉(zhuǎn)換為適合搜索的倒排索引。

standard 分析器是用于全文字段的默認(rèn)分析器, 對(duì)于大部分西方語(yǔ)系來(lái)說(shuō)是一個(gè)不錯(cuò)的選擇。 它包括了以下幾點(diǎn):

  • standard 分詞器,通過(guò)單詞邊界分割輸入的文本。
  • standard 語(yǔ)匯單元過(guò)濾器,目的是整理分詞器觸發(fā)的語(yǔ)匯單元(但是目前什么都沒(méi)做)。
  • lowercase 語(yǔ)匯單元過(guò)濾器,轉(zhuǎn)換所有的語(yǔ)匯單元為小寫。
  • stop 語(yǔ)匯單元過(guò)濾器,刪除停用詞--對(duì)搜索相關(guān)性影響不大的常用詞,如 a , the , and , is

默認(rèn)情況下,停用詞過(guò)濾器是被禁用的。如需啟用它,你可以通過(guò)創(chuàng)建一個(gè)基于 standard 分析器的自定義分析器并設(shè)置 stopwords 參數(shù)。 可以給分析器提供一個(gè)停用詞列表,或者告知使用一個(gè)基于特定語(yǔ)言的預(yù)定義停用詞列表。

在下面的例子中,我們創(chuàng)建了一個(gè)新的分析器,叫做 es_std , 并使用預(yù)定義的 西班牙語(yǔ)停用詞列表:

PUT /spanish_docs {"settings": {"analysis": {"analyzer": {"es_std": {"type": "standard","stopwords": "_spanish_"}}}} }

es_std 分析器不是全局的--它僅僅存在于我們定義的 spanish_docs 索引中。 為了使用 analyze API來(lái)對(duì)它進(jìn)行測(cè)試,我們必須使用特定的索引名:

GET /spanish_docs/_analyze?analyzer=es_std El veloz zorro marrón

簡(jiǎn)化的結(jié)果顯示西班牙語(yǔ)停用詞 El 已被正確的移除:

{"tokens" : [{ "token" : "veloz", "position" : 2 },{ "token" : "zorro", "position" : 3 },{ "token" : "marrón", "position" : 4 }] }

? ?自定義分析器

和我們之前配置 es_std 分析器一樣,我們可以在 analysis 下的相應(yīng)位置設(shè)置 字符過(guò)濾器 、 分詞器 和 詞單元過(guò)濾器:

PUT /my_index {"settings": {"analysis": {"char_filter": { ... custom character filters ... },"tokenizer": { ... custom tokenizers ... },"filter": { ... custom token filters ... },"analyzer": { ... custom analyzers ... }}} }

作為示范,讓我們一起來(lái)創(chuàng)建一個(gè)自定義分析器吧,字符過(guò)濾器 實(shí)現(xiàn)1、2、 分詞器 實(shí)現(xiàn)3, 詞單元過(guò)濾器實(shí)現(xiàn)4、5:

1、使用 html清除 字符過(guò)濾器移除HTML部分。(html_strip)

2、使用一個(gè)自定義的 映射 字符過(guò)濾器把 & 替換為 " and " :(_to_and)

"char_filter": {"&_to_and": {"type": "mapping","mappings": [ "&=> and "]} }

3、使用 標(biāo)準(zhǔn) 分詞器分詞。(standard)

4、小寫詞條,使用 小寫 詞過(guò)濾器處理。(lowercase)

5、使用自定義 停止 詞過(guò)濾器移除自定義的停止詞列表中包含的詞:(my_stopwords)

"filter": {"my_stopwords": {"type": "stop","stopwords": [ "the", "a" ]} }

一個(gè)完整的示例

PUT /my_index {"settings": {"analysis": {"char_filter": {"&_to_and": {"type": "mapping","mappings": [ "&=> and "]}},"filter": {"my_stopwords": {"type": "stop","stopwords": [ "the", "a" ]}},"analyzer": {"my_analyzer": {"type": "custom","char_filter": [ "html_strip", "&_to_and" ],"tokenizer": "standard","filter": [ "lowercase", "my_stopwords" ]}} }}}

索引被創(chuàng)建以后,使用 analyze API 來(lái) 測(cè)試這個(gè)新的分析器:

GET /my_index/_analyze?analyzer=my_analyzer The quick & brown fox

下面的縮略結(jié)果展示出我們的分析器正在正確地運(yùn)行:

{"tokens" : [{ "token" : "quick", "position" : 2 },{ "token" : "and", "position" : 3 },{ "token" : "brown", "position" : 4 },{ "token" : "fox", "position" : 5 }] }

這個(gè)分析器現(xiàn)在是沒(méi)有多大用處的,除非我們告訴 Elasticsearch在哪里用上它。我們可以像下面這樣把這個(gè)分析器應(yīng)用在一個(gè) string 字段上:

PUT /my_index/_mapping/my_type {"properties": {"title": {"type": "string","analyzer": "my_analyzer"}} }

2.4 索引的映射配置(mappings部分)

2.4.1 映射寫法

比如索引gb下有tweet和user類型,那么映射應(yīng)該如何定義呢,類似于下面

{"gb": {"mappings": {"tweet": {"properties": {"date": {"type": "date","format": "strict_date_optional_time||epoch_millis"},"name": {"type": "string"},"tweet": {"type": "string"},"user_id": {"type": "long"}}},"user":{...}}} }

上面json數(shù)據(jù)層次如下

索引gb-> mappings-> 類型tweet-> properites-> 字段date字段name......類型user-> properites-> 字段aa字段bb......

接下來(lái)梳理下映射的配置項(xiàng)

2.4.2 類型

關(guān)于配置中類型怎么處理很簡(jiǎn)單,如果有多個(gè)類型,那么就并列的嵌套在mappings對(duì)象下。

但是,這里我們有必要進(jìn)一步了解下類型

類型實(shí)際上是個(gè)邏輯區(qū)分,每個(gè)文檔的類型名被存儲(chǔ)在一個(gè)叫 _type 的元數(shù)據(jù)字段上。 當(dāng)我們要檢索某個(gè)類型的文檔時(shí), Elasticsearch 通過(guò)在 _type 字段上使用過(guò)濾器限制只返回這個(gè)類型的文檔。

如果有兩個(gè)不同的類型,每個(gè)類型都有同名的字段,但映射不同(例如:一個(gè)是字符串一個(gè)是數(shù)字),那么當(dāng)配置這樣的映射時(shí)候會(huì)出現(xiàn)異常。因?yàn)樵?Elasticsearch 中的所有類型最終都共享相同的映射,

以 data 索引中兩種類型的映射為例(只是演示,不真實(shí)有效):

{"data": {"mappings": {"people": {"properties": {"name": {"type": "string",},"address": {"type": "string"}}},"transactions": {"properties": {"timestamp": {"type": "date","format": "strict_date_optional_time"},"message": {"type": "string"}}}}} }

每個(gè)類型定義兩個(gè)字段 (分別是 "name"/"address" 和 "timestamp"/"message" )。它們看起來(lái)是相互獨(dú)立的,但在后臺(tái) Lucene 將創(chuàng)建一個(gè)映射,如:

{"data": {"mappings": {"_type": {"type": "string","index": "not_analyzed"},"name": {"type": "string"}"address": {"type": "string"}"timestamp": {"type": "long"}"message": {"type": "string"}}} }

結(jié)論:

  • 多個(gè)類型可以在相同的索引中存在,只要它們的字段不沖突,類型可以很好的區(qū)分同一個(gè)集合中的不同細(xì)分,

  • 類型不適合 完全不同類型的數(shù)據(jù) 。如果兩個(gè)類型的字段集是互不相同的,這就意味著索引中將有一半的數(shù)據(jù)是空的(字段將是 稀疏的 ),最終將導(dǎo)致性能問(wèn)題。在這種情況下,最好是使用兩個(gè)單獨(dú)的索引。

2.4.3 根對(duì)象

映射的最高一層被稱為 根對(duì)象 ,它可能包含下面幾項(xiàng):

  • 一個(gè) properties 節(jié)點(diǎn),列出了文檔中可能包含的每個(gè)字段的映射
  • 各種元數(shù)據(jù)字段,它們都以一個(gè)下劃線開頭,例如 _type 、 _id 和 _source
  • 設(shè)置項(xiàng),控制如何動(dòng)態(tài)處理新的字段,例如 analyzer 、 dynamic_date_formats 和 dynamic_templates
  • 其他設(shè)置,可以同時(shí)應(yīng)用在根對(duì)象和其他 object 類型的字段上,例如 enabled 、 dynamic 和 include_in_all

在一個(gè)映射配置中的部分選項(xiàng)的位置示例:

{"gb": {"mappings": {"people": {"_source": {"enabled": false},"_all": {"enabled": false},"properties": {"name": {"type": "string","index": "analyzed","analyzer": "english"},"address": {"type": "string"}}},}} }

? 1、屬性

  • type屬性

字段的數(shù)據(jù)類型,例如 string 或 date

對(duì)于不是 string 的域,你一般只需要設(shè)置 type :

{"number_of_clicks": {"type": "integer"} }

默認(rèn), string 類型域會(huì)被認(rèn)為包含全文。就是說(shuō),它們的值在索引前,會(huì)通過(guò) 一個(gè)分析器,針對(duì)于這個(gè)域的查詢?cè)谒阉髑耙矔?huì)經(jīng)過(guò)一個(gè)分析器。

  • index屬性

字段是否應(yīng)當(dāng)被當(dāng)成全文來(lái)搜索( analyzed ),或被當(dāng)成一個(gè)準(zhǔn)確的值( not_analyzed ),還是完全不可被搜索( no )

index 屬性控制怎樣索引字符串。它可以是下面三個(gè)值:

analyzed 首先分析字符串,然后索引它。換句話說(shuō),以全文索引這個(gè)域。

not_analyzed 索引這個(gè)域,所以它能夠被搜索,但索引的是精確值。不會(huì)對(duì)它進(jìn)行分析。

no 不索引這個(gè)域。這個(gè)域不會(huì)被搜索到。

string 域 index 屬性默認(rèn)是 analyzed 。如果我們想映射這個(gè)字段為一個(gè)精確值,我們需要設(shè)置它為 not_analyzed :

{"tag": {"type": "string","index": "not_analyzed"} }

其他簡(jiǎn)單類型(例如 long , double , date 等)也接受 index 參數(shù),但有意義的值只有 no 和 not_analyzed , 因?yàn)樗鼈冇肋h(yuǎn)不會(huì)被分析。

  • analyzer屬性

對(duì)于 analyzed 字符串域,用 analyzer 屬性指定在搜索和索引時(shí)使用的分析器。上面我們用了很多篇幅介紹了分析器內(nèi)容,在這里就可以使用這些分析器了。默認(rèn), Elasticsearch 使用 standard 分析器, 但你可以指定一個(gè)內(nèi)置的分析器替代它,例如 whitespace 、 simple 和 english:

{"tweet": {"type": "string","analyzer": "english"} }
  • multi_field類型

有時(shí)候需要將同一個(gè)值,存入到不同的字段,例如一個(gè)字段用于搜索,另一個(gè)字段用于統(tǒng)計(jì)。這時(shí)我們就可以使用multi_field來(lái)實(shí)現(xiàn)

{"gb": {"mappings": {"user": {"properties": {"name": {"type": "multi_field","fields": {"name": {"type": "string","index": "analyzed"},"facet": {"type": "string","index": "not_analyzed"}}},}},}} }

上述定義會(huì)創(chuàng)建兩個(gè)字段,一個(gè)通過(guò)name來(lái)引用,另一個(gè)通過(guò)name.facet引用。當(dāng)然創(chuàng)建索引的時(shí)候沒(méi)有必要專門指定兩個(gè)不同字段,一個(gè)name字段就可以了,es會(huì)自動(dòng)完成剩余的工作。

? 2、元數(shù)據(jù):_source字段

默認(rèn)地,Elasticsearch 在 _source 字段存儲(chǔ)代表文檔體的JSON字符串, _source 字段在被寫入磁盤之前先會(huì)被壓縮。

擁有該字段意味著下面這些:

  • 搜索結(jié)果包括了整個(gè)可用的文檔——不需要額外的從另一個(gè)的數(shù)據(jù)倉(cāng)庫(kù)來(lái)取文檔。
  • 如果沒(méi)有 _source 字段,部分 update 請(qǐng)求不會(huì)生效。
  • 當(dāng)你的映射改變時(shí),你需要重新索引你的數(shù)據(jù),有了_source字段你可以直接從Elasticsearch這樣做,而不必從另一個(gè)(通常是速度更慢的)數(shù)據(jù)倉(cāng)庫(kù)取回你的所有文檔。
  • 當(dāng)你不需要看到整個(gè)文檔時(shí),單個(gè)字段可以從 _source 字段提取和通過(guò) get 或者 search 請(qǐng)求返回。
  • 調(diào)試查詢語(yǔ)句更加簡(jiǎn)單,因?yàn)槟憧梢灾苯涌吹矫總€(gè)文檔包括什么,而不是從一列id猜測(cè)它們的內(nèi)容。

然而,存儲(chǔ) _source 字段的確要使用磁盤空間。如果上面的原因?qū)δ銇?lái)說(shuō)沒(méi)有一個(gè)是重要的,你可以用下面的映射禁用 _source 字段:

PUT /my_index {"mappings": {"my_type": {"_source": {"enabled": false},"properties": {......}}} }

在一個(gè)搜索請(qǐng)求里,你可以通過(guò)在請(qǐng)求體中指定 _source 參數(shù),來(lái)達(dá)到只獲取特定的字段的效果:

GET /_search {"query": { "match_all": {}},"_source": [ "title", "created" ] }

這些字段的值會(huì)從 _source 字段被提取和返回,而不是返回整個(gè) _source 。

? 3、 元數(shù)據(jù):_all字段

_all 字段:一個(gè)把其它字段值 當(dāng)作一個(gè)大字符串來(lái)索引的特殊字段。 query_string 查詢子句(搜索 ?q=john )在沒(méi)有指定字段時(shí)默認(rèn)使用 _all 字段。

_all 字段在新應(yīng)用的探索階段,當(dāng)你還不清楚文檔的最終結(jié)構(gòu)時(shí)是比較有用的。你可以使用這個(gè)字段來(lái)做任何查詢,并且有很大可能找到需要的文檔:

GET /_search {"match": {"_all": "john smith marketing"} }

隨著應(yīng)用的發(fā)展,搜索需求變得更加明確,你會(huì)發(fā)現(xiàn)自己越來(lái)越少使用 _all 字段。 _all 字段是搜索的應(yīng)急之策。通過(guò)查詢指定字段,你的查詢更加靈活、強(qiáng)大,你也可以對(duì)相關(guān)性最高的搜索結(jié)果進(jìn)行更細(xì)粒度的控制。

如果你不再需要 _all 字段,你可以通過(guò)下面的映射來(lái)禁用:

PUT /my_index/_mapping/my_type {"my_type": {"_all": { "enabled": false },"properties": {......}} }

_all字段會(huì)增加索引的大小,因?yàn)樵诓恍枰褂玫臅r(shí)候最好禁用。

通過(guò) include_in_all 設(shè)置來(lái)逐個(gè)控制字段是否要包含在 _all 字段中,默認(rèn)值是 true。在一個(gè)對(duì)象(或根對(duì)象)上設(shè)置 include_in_all 可以修改這個(gè)對(duì)象中的所有字段的默認(rèn)行為。

你可能想要保留 _all 字段作為一個(gè)只包含某些特定字段的全文字段,例如只包含 title,overview,summary 和 tags。 相對(duì)于完全禁用 _all 字段,你可以為所有字段默認(rèn)禁用 include_in_all 選項(xiàng),僅在你選擇的字段上啟用:

PUT /my_index/my_type/_mapping {"my_type": {"include_in_all": false,"properties": {"title": {"type": "string","include_in_all": true},...}} }

記住,_all 字段僅僅是一個(gè) 經(jīng)過(guò)分詞的 string 字段。它使用默認(rèn)分詞器來(lái)分析它的值,不管這個(gè)值原本所在字段指定的分詞器。就像所有 string 字段,你可以配置 _all 字段使用的分詞器:

PUT /my_index/my_type/_mapping {"my_type": {"_all": { "analyzer": "whitespace" }} }

2.4.4 動(dòng)態(tài)映射

我們開頭就說(shuō)過(guò)es會(huì)自動(dòng)匹配數(shù)據(jù)結(jié)構(gòu),這種機(jī)制其實(shí)就是動(dòng)態(tài)映射,當(dāng) Elasticsearch 遇到文檔中以前 未遇到的字段,它用 dynamic mapping 來(lái)確定字段的數(shù)據(jù)類型并自動(dòng)把新的字段添加到類型映射。

上面我們又考慮到,想要自己定義數(shù)據(jù)結(jié)構(gòu),所有要自己實(shí)現(xiàn)配置分析器,定義映射關(guān)系,但是我們想要新加一個(gè)字段,這時(shí)候還是會(huì)用到動(dòng)態(tài)映射。

有時(shí)這是想要的行為有時(shí)又不希望這樣。通常沒(méi)有人知道以后會(huì)有什么新字段加到文檔,但是又希望這些字段被自動(dòng)的索引。也許你只想忽略它們。如果Elasticsearch是作為重要的數(shù)據(jù)存儲(chǔ),可能就會(huì)期望遇到新字段就會(huì)拋出異常,這樣能及時(shí)發(fā)現(xiàn)問(wèn)題。

幸運(yùn)的是可以用 dynamic 配置來(lái)控制這種行為 ,可接受的選項(xiàng)如下:

  • true 動(dòng)態(tài)添加新的字段--缺省
  • false 忽略新的字段
  • strict 如果遇到新字段拋出異常

配置參數(shù) dynamic 可以用在根 object 或任何 object 類型的字段上。你可以將 dynamic 的默認(rèn)值設(shè)置為 strict , 而只在指定的內(nèi)部對(duì)象中開啟它, 例如:

PUT /my_index {"mappings": {"my_type": {"dynamic": "strict", "properties": {"title": { "type": "string"},"stash": {"type": "object","dynamic": true }}}} }

把 dynamic 設(shè)置為 false 一點(diǎn)兒也不會(huì)改變 _source 的字段內(nèi)容。 _source 仍然包含被索引的整個(gè)JSON文檔。只是新的字段不會(huì)被加到映射中也不可搜索。

2.4.5 自定義動(dòng)態(tài)映射

有時(shí)候你想增加新的字段,也想用動(dòng)態(tài)映射,但是動(dòng)態(tài)映射又不是很只能,幸運(yùn)的是,es允許我們自己定義動(dòng)態(tài)映射的規(guī)則。

通過(guò)動(dòng)態(tài)模板,你可以完全控制 新檢測(cè)生成字段的映射。你甚至可以通過(guò)字段名稱或數(shù)據(jù)類型來(lái)應(yīng)用不同的映射。

每個(gè)模板都有一個(gè)名稱, 你可以用來(lái)描述這個(gè)模板的用途, 一個(gè) mapping 來(lái)指定映射應(yīng)該怎樣使用,以及至少一個(gè)參數(shù) (如 match) 來(lái)定義這個(gè)模板適用于哪個(gè)字段。

模板按照順序來(lái)檢測(cè);第一個(gè)匹配的模板會(huì)被啟用。例如,我們給 string 類型字段定義兩個(gè)模板:

  • es :以 _es 結(jié)尾的字段名需要使用 spanish 分詞器。
  • en :所有其他字段使用 english 分詞器。

我們將 es 模板放在第一位,因?yàn)樗绕ヅ渌凶址侄蔚?en 模板更特殊:

PUT /my_index {"mappings": {"my_type": {"dynamic_templates": [{ "es": {"match": "*_es", "match_mapping_type": "string","mapping": {"type": "string","analyzer": "spanish"}}},{ "en": {"match": "*", "match_mapping_type": "string","mapping": {"type": "string","analyzer": "english"}}}] }}}
  • match_mapping_type 允許你應(yīng)用模板到特定類型的字段上,就像有標(biāo)準(zhǔn)動(dòng)態(tài)映射規(guī)則檢測(cè)的一樣, (例如 string 或 long)。
  • match 參數(shù)只匹配字段名稱
  • path_match 參數(shù)匹配字段在對(duì)象上的完整路徑,所以 address.*.name 將匹配這樣的字段:
{"address": {"city": {"name": "New York"}} }
  • unmatch 和 path_unmatch將被用于未被匹配的字段。

2.4.6 缺省映射

通常,一個(gè)索引中的所有類型共享相同的字段和設(shè)置。 default 映射更加方便地指定通用設(shè)置,而不是每次創(chuàng)建新類型時(shí)都要重復(fù)設(shè)置。 default 映射是新類型的模板。在設(shè)置 default 映射之后創(chuàng)建的所有類型都將應(yīng)用這些缺省的設(shè)置,除非類型在自己的映射中明確覆蓋這些設(shè)置。

例如,我們可以使用 default 映射為所有的類型禁用 _all 字段, 而只在 blog 類型啟用:

PUT /my_index {"mappings": {"_default_": {"_all": { "enabled": false }},"blog": {"_all": { "enabled": true }}} }

不難發(fā)現(xiàn),default 映射也可以指定映射規(guī)則,所以_default_ 映射也是一個(gè)指定索引 dynamic templates 的好方法。

2.5 索引的管理

2.5.1 創(chuàng)建索引

創(chuàng)建一個(gè)使用默認(rèn)配置的索引

curl -XPOST 'http://localhost:9200/posts'

創(chuàng)建一個(gè)手動(dòng)定義規(guī)則的索引

PUT /my_index {"settings": { ... any settings ... },"mappings": {"type_one": { ... any mappings ... },"type_two": { ... any mappings ... },...} }

2.5.2 查看索引

GET /gb/_mapping/tweet

通過(guò) /_mapping ,我們可以查看 Elasticsearch 在一個(gè)或多個(gè)索引中的一個(gè)或多個(gè)類型的映射

{"gb": {"mappings": {"tweet": {"properties": {"date": {"type": "date","format": "strict_date_optional_time||epoch_millis"},"name": {"type": "string"},"tweet": {"type": "string"},"user_id": {"type": "long"}}}}} }

2.5.3 刪除索引

# 刪除一個(gè)索引 DELETE /my_index# 刪除 多個(gè) 索引: DELETE /index_one,index_two DELETE /index_*# 刪除 全部 索引: DELETE /_all DELETE /*

2.5.4 重構(gòu)索引

  • 如果索引中還沒(méi)有任何數(shù)據(jù)

最簡(jiǎn)單的方法就是刪除索引,然后重新按照自己的需求建立。

  • 如果已經(jīng)有數(shù)據(jù)

對(duì)現(xiàn)有數(shù)據(jù)的這類改變最簡(jiǎn)單的辦法就是重新索引:用新的設(shè)置創(chuàng)建新的索引并把文檔從舊的索引復(fù)制到新的索引。

字段 _source 的一個(gè)優(yōu)點(diǎn)是在Elasticsearch中已經(jīng)有整個(gè)文檔。你不必從源數(shù)據(jù)中重建索引,而且那樣通常比較慢。

為了有效的重新索引所有在舊的索引中的文檔,用 scroll 從舊的索引檢索批量文檔 , 然后用 bulk API (批量寫入)把文檔推送到新的索引中。

轉(zhuǎn)載于:https://www.cnblogs.com/redirect/p/8436072.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的elasticsearch索引和映射的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

久久久久久久久毛片精品 | 欧美精品在线视频观看 | 精品三级av | 天天插综合| 国产成人精品av久久 | 国产精品久久久久久久久久久杏吧 | 成人黄大片 | 日本中文字幕观看 | 在线不卡视频 | 狠狠色丁香婷综合久久 | 女女av在线 | 在线国产精品视频 | 一区二区视频欧美 | 亚洲激情精品 | 日韩一级黄色av | 首页国产精品 | 激情综合一区 | 欧美精彩视频在线观看 | 国产精品 999 | 97成人免费视频 | 亚洲视频在线观看免费 | 丁香久久久 | 成人app在线播放 | 免费成人在线观看视频 | 色视频在线观看 | 97成人精品区在线播放 | 香蕉视频一级 | 国产一在线精品一区在线观看 | 99r在线观看| 国产99久久久精品视频 | 欧美一级在线看 | 99产精品成人啪免费网站 | 特级黄录像视频 | 青青草华人在线视频 | www.午夜色.com | 精品久久久久久久久久岛国gif | 国产精品高| 操操操影院 | 免费日韩精品 | 国产区高清在线 | av解说在线观看 | 在线视频国产区 | www.com.黄| 在线观看一区 | 丁香六月五月婷婷 | 在线视频久 | 91视频3p| 伊人www22综合色 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久草青青在线观看 | 91av视频免费在线观看 | 日韩欧美视频免费观看 | 久久久久久久久久久久久9999 | 97精品国产97久久久久久 | 午夜12点| 456免费视频 | 亚洲性xxxx | 久久精品视频免费播放 | 狠狠插狠狠干 | 91在线视频免费播放 | 久久精品视频3 | 天天激情综合 | 久久久久久久久免费 | 亚洲乱亚洲乱亚洲 | 深爱综合网 | 亚洲理论在线观看 | 天天操天天添天天吹 | 日韩高清在线一区二区三区 | av丝袜制服 | 久久久久久久久久伊人 | 久久伊人婷婷 | 日本在线观看一区二区 | 免费在线电影网址大全 | 韩国av电影在线观看 | 精品一区二区在线播放 | 日本在线观看黄色 | 国产视频久久久久 | 2018亚洲男人天堂 | 日韩簧片在线观看 | 99久久精品无免国产免费 | 久久撸在线视频 | 99欧美精品| av在线网站免费观看 | av资源免费观看 | 久久久久久久久久久久99 | 欧美日韩一区二区三区在线免费观看 | 欧美午夜激情网 | 在线免费精品视频 | 性色av免费观看 | 色网站视频 | 国产精品久久久免费 | 麻豆av一区二区三区在线观看 | av福利免费 | 免费高清在线观看成人 | 93久久精品日日躁夜夜躁欧美 | 国产综合在线视频 | 69中文字幕| 亚洲色图 校园春色 | 久久国产高清 | 美国三级黄色大片 | av片子在线观看 | 欧美精品久久久久性色 | 精品一区二区免费视频 | 99精品国产在热久久下载 | 成人在线免费观看视视频 | 91久久黄色| 九9热这里真品2 | 国产精品综合在线观看 | av播放在线| 国产精品欧美一区二区三区不卡 | 激情伊人五月天 | 欧美国产日韩在线视频 | 久久久免费网站 | 久久视频在线观看中文字幕 | 久热电影 | 在线看片视频 | 久久夜色精品国产欧美乱 | 人人超在线公开视频 | 午夜精品久久久久久久久久久 | 91av电影网| 狠狠狠狠狠狠操 | 99久久精品免费视频 | 欧美污污网站 | 色www免费视频 | 国产亚洲成av片在线观看 | 久要激情网 | 久久综合在线 | 国产不卡在线观看视频 | 色婷婷国产 | 波多野结衣电影一区二区三区 | 亚洲一区在线看 | 黄色免费观看网址 | 久久免费公开视频 | 色97在线 | 精品在线观看一区二区 | 亚洲视频免费 | 天天综合视频在线观看 | 人人爽久久久噜噜噜电影 | 国产视频不卡一区 | 久久网站免费 | 国产成人av电影在线观看 | 久久精品专区 | 国产精品一区二区 91 | 看全黄大色黄大片 | 九色免费视频 | 亚洲欧美999| 在线免费视频 你懂得 | 蜜臀91丨九色丨蝌蚪老版 | 丁香色婷 | 中文字幕一区二区三区在线播放 | 在线免费av网站 | 狠狠狠干 | 国产色婷婷精品综合在线手机播放 | 曰韩精品 | 精品国产人成亚洲区 | 国产欧美高清 | 免费午夜av | 天堂激情网 | 丁香六月婷婷 | 天天色天天射综合网 | 亚洲天天做 | 激情久久久 | 91在线视频免费播放 | 国产在线一区二区 | 干综合网 | 久久99国产精品免费网站 | 日韩av成人免费看 | 91大神一区二区三区 | 亚洲japanese制服美女 | 黄色成人小视频 | 色妞色视频一区二区三区四区 | 久久国产热 | 久久久影院官网 | 中文字幕在线资源 | 四虎成人av | 国产精品成人自产拍在线观看 | 欧美性色xo影院 | 国产中文字幕一区 | 欧美另类性 | 日韩小视频| 色av男人的天堂免费在线 | 欧美精品久久久久久久免费 | 久久久久久久久久国产精品 | 97超视频在线观看 | 久久手机免费视频 | 特级毛片aaa| 欧美韩日精品 | 日本精品视频在线观看 | 狠狠狠狠狠狠狠 | 奇米影视四色8888 | 婷婷亚洲五月 | 99综合影院在线 | www色,com| 亚洲五月婷 | 91免费的视频在线播放 | 狠狠色狠狠色合久久伊人 | 欧美日韩性视频在线 | 国产精品激情在线观看 | 国产伦精品一区二区三区… | 在线视频 区 | 蜜臀av在线一区二区三区 | 久久久久久久久久亚洲精品 | 国产高清成人av | 亚洲视频久久久久 | 国产小视频国产精品 | 国产香蕉97碰碰碰视频在线观看 | 91精品国产乱码 | 在线小视频国产 | 久久99热久久99精品 | 国产精品久久久久久久久费观看 | 久久久久久久99精品免费观看 | 一区二区观看 | 最近免费中文字幕大全高清10 | 久久伊人国产精品 | 69国产盗摄一区二区三区五区 | 国产精品久久久视频 | 国产日韩精品一区二区三区在线 | 日韩夜夜爽 | 欧美在线一 | 成人香蕉视频 | 久久综合中文字幕 | 午夜婷婷综合 | 在线91av | 色综合色综合色综合 | 日韩欧美在线中文字幕 | 性日韩欧美在线视频 | 日韩av偷拍| 日韩欧美极品 | 在线v片| 欧美一级片在线 | 国产精品视频地址 | 日韩电影久久久 | 久久公开免费视频 | 精品久久久网 | 免费高清国产 | 五月天激情电影 | 日韩性色 | 成人av片免费看 | 国产精品久久久久影视 | 国产麻豆精品久久一二三 | 久久精品高清 | 亚洲麻豆精品 | 国产二区av | 成人a视频 | 久久综合狠狠狠色97 | 男女激情片在线观看 | 欧美男男tv网站 | 国产成人久久av | 九色视频自拍 | 亚洲自拍偷拍色图 | 天天操天天谢 | 九色视频自拍 | 欧美极品少妇xbxb性爽爽视频 | 亚洲精品资源 | 欧美国产日韩在线观看 | 亚洲 欧美 综合 在线 精品 | 亚洲精品视频在线观看网站 | 最新中文在线视频 | 日本69hd| 黄网站色视频免费观看 | 国产在线观看91 | 亚洲人成免费网站 | 欧美日韩性视频在线 | 伊人国产在线播放 | 午夜三级理论 | 欧美性精品| 啪啪免费观看网站 | 国产成人777777 | www.夜夜 | 一级一片免费视频 | 丁香激情五月婷婷 | 日日摸日日爽 | 狠狠操精品 | 精品视频免费久久久看 | 国产精品资源 | 热久久视久久精品18亚洲精品 | 久久国产91 | 美女福利视频 | 狠狠躁夜夜躁人人爽超碰91 | 一区二区三区精品在线 | 97色国产 | 91最新视频 | 婷婷综合av | 中文字幕在线观看一区 | 一区二区伦理 | 亚洲精品国产免费 | 欧美成人xxxxx| 久久成人人人人精品欧 | 国产 日韩 中文字幕 | 最新日韩在线观看 | 免费福利在线 | 国产二区精品 | 久久成人毛片 | 色综合天天干 | 黄色三级在线看 | 中文字幕一区二区三区在线视频 | 在线欧美日韩 | 中文在线www| 操操操干干干 | 国产成人福利片 | 久久综合国产伦精品免费 | 91视频在线免费下载 | 丁香六月久久综合狠狠色 | 欧美一级片在线 | 久久一级片 | 国产黄在线 | 久产久精国产品 | 99久久9 | 伊人看片| 国产亚洲欧美日韩高清 | 免费色婷婷 | 中文字幕乱码电影 | a级国产乱理论片在线观看 特级毛片在线观看 | 亚洲v欧美v国产v在线观看 | 在线观看一区二区精品 | 亚洲成人资源 | 亚洲精品tv久久久久久久久久 | 久久社区视频 | 国产精品免费大片视频 | 四虎在线免费视频 | 国产在线不卡一区 | 天天艹天天 | 天天射天天拍 | 国产69熟 | 成人动漫一区二区三区 | 热久久免费视频精品 | 色婷婷久久 | 五月婷丁香 | 国产亚洲免费观看 | 久草在线观看视频免费 | av色影院 | 丁香激情五月 | 天天操天天色天天 | 久久在线电影 | 日韩中文字幕在线看 | 亚洲一区二区视频在线播放 | 91| 中文字幕综合在线 | 欧美巨大荫蒂茸毛毛人妖 | 福利一区二区 | 天天草综合网 | 欧美精品九九99久久 | 国产一区二区日本 | 99视频在线播放 | 激情综合五月天 | 91精彩视频在线观看 | www免费 | 国内偷拍精品视频 | 岛国片在线| 国产精品免费看久久久8精臀av | 日韩三区在线观看 | 日韩激情视频在线观看 | 国产日韩欧美在线一区 | 日日夜夜中文字幕 | 国产一级特黄电影 | 一区二区中文字幕在线播放 | 日韩在线免费看 | 国产99久久久国产精品 | 久久a久久 | 欧美a视频在线观看 | 色综合亚洲精品激情狠狠 | 99热这里只有精品在线观看 | 色综合久久88色综合天天人守婷 | 午夜精品99久久免费 | 日韩电影中文,亚洲精品乱码 | 人人干人人干人人干 | 亚洲成人免费在线观看 | 狠狠狠的干 | 五月天综合激情 | 黄色大片免费播放 | 欧美精品在线观看免费 | 亚洲国产午夜视频 | 视频在线播放国产 | 超碰在线天天 | 麻豆成人在线观看 | 久久精品一区八戒影视 | 国产精品高潮久久av | 国产剧情亚洲 | www免费| 国产在线观看91 | av免费片| 久久午夜电影网 | 天堂久色 | 天天射综合网站 | 久久av高清| 91麻豆高清视频 | 黄色tv视频 | 久久国产美女视频 | 日韩精品一区二区三区免费观看 | 91麻豆精品国产91 | 国产精品一区二区av影院萌芽 | 成人一级片视频 | 亚洲一区欧美激情 | 在线观看91精品国产网站 | 亚洲精品高清在线 | 欧美日韩精品在线一区二区 | 另类老妇性bbwbbw高清 | 亚洲在线不卡 | 91精品老司机久久一区啪 | 中文字幕一区二区三区精华液 | 最新午夜电影 | 精品国产一区二区三区久久久久久 | 中文字幕在线看视频 | 99夜色| 亚洲精品国产精品乱码在线观看 | 久久综合五月天 | 青青草在久久免费久久免费 | 久久综合亚洲鲁鲁五月久久 | 日韩在线观看的 | 欧美a在线免费观看 | 天天躁日日躁狠狠躁 | 久久综合视频网 | 日韩专区中文字幕 | 视频一区在线播放 | 欧美坐爱视频 | 国产99久久精品 | 亚洲激情小视频 | 免费一级片在线 | 在线观看国产 | 国产 精品 资源 | 日本资源中文字幕在线 | 亚洲欧美日韩精品久久久 | www.久草视频| 国产小视频精品 | 亚洲高清91| 一级性视频 | 中文字幕日本电影 | 在线观看免费视频 | 天天插天天干天天操 | 懂色av一区二区三区蜜臀 | 麻豆一二| 欧美做受高潮电影o | 中文字幕第一页在线播放 | 天天色天天色天天色 | 国模一区二区三区四区 | 超碰日韩在线 | 99c视频在线| 久草视频免费在线播放 | 婷五月激情 | 中文字幕第一页在线 | 亚洲一二三区精品 | 欧美精品小视频 | 日韩在线观看网站 | 在线国产视频观看 | 亚洲精品综合欧美二区变态 | 天天色中文 | 亚洲精品三级 | 日韩日韩日韩日韩 | 亚洲激色 | 91人人爽人人爽人人精88v | 在线观看成人毛片 | www久久久久 | 日日爱av | 日韩电影在线观看一区二区 | 国产精品24小时在线观看 | 91在线观| 欧美 日韩 性 | 中文字幕亚洲在线观看 | 国产字幕在线播放 | 国产精品久久久区三区天天噜 | 中文字幕在线观看一区二区 | 99热这里有精品 | 黄色一级动作片 | 成人av免费电影 | 中文字幕在线播放一区二区 | 99婷婷狠狠成为人免费视频 | 国产99久久久国产精品免费二区 | 九热精品 | 91在线看视频免费 | 91精品资源 | 免费观看性生活大片3 | www成人精品 | 日本色小说视频 | 91你懂的 | 久久综合精品一区 | 午夜私人影院 | 欧美精品免费一区二区 | av免费网站在线观看 | 就色干综合 | 人人澡人摸人人添学生av | 伊人成人激情 | 日本在线观看中文字幕无线观看 | 国产精品va在线 | 国产麻豆电影 | 香蕉视频日本 | 亚洲成成品网站 | 国产精品一区二区在线免费观看 | 96久久久 | 久久香蕉电影网 | 人人揉人人揉人人揉人人揉97 | 国产91丝袜在线播放动漫 | 国产一区观看 | 国产麻豆成人传媒免费观看 | 99在线视频观看 | 色狠狠婷婷 | 日韩两性视频 | 久草国产在线观看 | 狠狠操操网| 九九日韩 | 色就色,综合激情 | 久艹视频在线观看 | 看片一区二区三区 | 欧美日韩不卡一区二区三区 | 天堂av免费观看 | 69精品久久久 | 久久9视频 | 最近中文字幕高清字幕在线视频 | 久久精品一区二区三区四区 | 午夜的福利| 国内精品久久久久影院男同志 | 国产精品女 | 黄www在线观看 | 91av视频导航 | 狠狠干电影 | 免费在线观看a v | 日本爱爱片 | 成人一级在线 | 欧美va天堂va视频va在线 | 99在线精品视频 | 有码中文字幕在线观看 | 亚洲一区视频在线播放 | 一区二区日韩av | 亚洲视频综合在线 | 国产91精品在线播放 | 国产在线精品福利 | www.婷婷色 | 亚洲日本国产 | 久久久999 | 国产一级免费观看视频 | 国产丝袜一区二区三区 | 涩五月婷婷 | 成年人免费看的视频 | 免费在线色视频 | 正在播放 久久 | 久久综合久久综合这里只有精品 | 久操视频在线免费看 | 日韩中文字幕在线不卡 | 园产精品久久久久久久7电影 | 亚洲 中文 在线 精品 | 久草网站在线 | 成在线播放 | 国产精品都在这里 | 91av在线免费观看 | 精品久久久久久国产91 | 亚州精品天堂中文字幕 | 黄色毛片观看 | 中文字幕视频在线播放 | 国产操在线| 免费国产一区二区视频 | 欧美日韩国内在线 | 久久综合欧美精品亚洲一区 | 国产一级特黄电影 | 麻豆视频免费入口 | 午夜在线资源 | 成年人电影毛片 | 久久精品国产免费看久久精品 | 韩国av不卡 | 成人av资源 | 81国产精品久久久久久久久久 | 婷婷成人亚洲综合国产xv88 | 亚洲一区视频免费观看 | 日韩精品欧美精品 | 99精品久久久久久久 | 丝袜少妇在线 | 国产高清一区二区 | 久久国产精彩视频 | 日韩欧美精品一区二区 | 国产资源在线免费观看 | 国产精品一区二区三区视频免费 | 在线观看一区二区精品 | 国产第一页精品 | 亚洲精品黄色在线观看 | 日韩在线观看视频免费 | 国产精品黄色影片导航在线观看 | 天天干天天综合 | 亚洲视频999 | 成年人免费在线播放 | 91精品国产成 | 美女国产精品 | 丁香久久 | 亚洲天堂网站 | 四虎永久精品在线 | 欧美电影在线观看 | 国产原创在线视频 | 一级黄色免费网站 | www.91国产| 免费福利片 | 国产欧美日韩精品一区二区免费 | 久久天堂亚洲 | 国产色啪 | 国产小视频免费在线网址 | 91大神免费视频 | 色婷婷一区 | 在线免费试看 | www.五月天婷婷.com | 欧美一级性生活 | 在线免费黄色av | 黄污在线看 | 999成人网 | 欧美日韩午夜爽爽 | 日韩av在线网站 | 在线国产高清 | 在线观看日韩中文字幕 | 国产精品久久电影观看 | 中文字幕在线观看一区二区 | 久久99影院 | 国产精品久久久久永久免费看 | 奇米影音四色 | 日韩av电影免费在线观看 | 美女中文字幕 | 国内视频1区 | 国产理论一区二区三区 | 在线 欧美 日韩 | www.亚洲视频| av在线免费观看网站 | 最近免费在线观看 | 天堂资源在线观看视频 | 中文字幕在线观看完整版 | 国产精品免费人成网站 | 久久五月婷婷综合 | 午夜av在线电影 | 亚洲爱爱视频 | 在线电影a| 午夜天天操 | 久久精品国产成人精品 | 国产成人中文字幕 | 国产视频在线观看免费 | 精品在线一区二区 | 免费看污污视频的网站 | 国产在线黄 | 久热这里有精品 | 国产资源网 | 五月天色站 | 国产精品久久三 | 欧美在线日韩在线 | 91精品一区二区三区蜜桃 | 91精品办公室少妇高潮对白 | 国产裸体永久免费视频网站 | 久久久色| 中文字幕网址 | 久久久久欧美精品999 | 视频直播国产精品 | 欧美a免费 | 亚洲精品乱码白浆高清久久久久久 | 国产综合福利在线 | 九草在线视频 | 日韩av综合网站 | 午夜精品一区二区三区免费 | 亚洲国产日韩欧美 | 四虎国产精 | 免费看色的网站 | 亚洲综合色视频在线观看 | 久久亚洲区 | 99视频精品全国免费 | 伊人电影在线观看 | 亚洲国产剧情av | 97国产超碰 | 中文字幕视频免费观看 | 亚洲九九精品 | 激情开心站 | 99精品国产一区二区三区不卡 | 91看片麻豆 | 伊人中文在线 | 国产小视频网站 | 最近中文字幕高清字幕免费mv | 在线观看免费视频你懂的 | 欧美视频在线观看免费网址 | 久久婷亚洲五月一区天天躁 | 日韩欧美视频免费看 | av在线电影免费观看 | 免费国产在线精品 | 伊人五月综合 | 日韩电影中文字幕在线 | 国产特黄色片 | 中文字幕在线视频国产 | 中文字幕一区二区三区久久蜜桃 | 久草在线手机观看 | 国产原创在线观看 | 在线播放视频一区 | 成人一区在线观看 | 国产精品v欧美精品 | 日韩久久精品 | 久久久在线观看 | 91人人爽久久涩噜噜噜 | 97狠狠干| 2022国产精品视频 | 天天综合成人网 | 亚洲精品大全 | 国产网站色 | 超碰人人射 | 亚洲欧美怡红院 | 成人在线免费小视频 | 91专区在线观看 | 欧美一区二区三区四区夜夜大片 | 2017狠狠干| 在线观看中文字幕2021 | 成年人国产在线观看 | av在线影片| 久久久91精品国产一区二区精品 | 成人黄色小说网 | 国产精品美女www爽爽爽视频 | 成人免费一区二区三区在线观看 | 欧美一级片免费 | 天天操夜夜摸 | 国产高清黄色 | 国产视频久久久 | 日日操天天操夜夜操 | 欧美成人播放 | 正在播放一区二区 | 91精品1区| 国产麻豆果冻传媒在线观看 | 久久免费激情视频 | 91热在线| 亚洲成人精品在线观看 | 81国产精品久久久久久久久久 | 国产精品国产三级国产专区53 | 在线播放av网址 | 美女视频黄在线观看 | 久产久精国产品 | 国产麻豆剧传媒免费观看 | 又色又爽的网站 | 精品国模一区二区 | 九九九在线观看 | 超碰97在线资源 | 久二影院| 波多野结衣一区二区三区中文字幕 | 在线 成人 | 美女黄濒| 午夜体验区 | 午夜国产福利在线 | 婷婷激情av | 久久久久久久亚洲精品 | 99久久精品免费看国产四区 | 日日日操操 | 午夜精品成人一区二区三区 | 麻豆国产在线播放 | 久久久久欧美精品999 | 91精品老司机久久一区啪 | 欧美少妇bbwhd | 九月婷婷人人澡人人添人人爽 | 最新中文字幕在线观看视频 | 精品亚洲一区二区 | 国产精品无av码在线观看 | 嫩草伊人久久精品少妇av | japanesexxxhd奶水 国产一区二区在线免费观看 | 日韩av高清在线观看 | 国产日韩精品一区二区三区 | 成年人免费在线观看网站 | 免费观看www视频 | 粉嫩av一区二区三区四区 | 在线观看一区 | 在线免费观看黄色 | 91久色蝌蚪 | 久草在线精品观看 | 狠狠网亚洲精品 | 国产99免费| 日日夜夜网 | 久久午夜免费视频 | 日韩精选在线观看 | 国产精彩在线视频 | 丁香六月欧美 | 91av手机在线观看 | 天天摸天天弄 | 国内精品久久久 | 97视频在线 | 超碰人人草 | 九月婷婷人人澡人人添人人爽 | 久久精品牌麻豆国产大山 | 日韩在线观看网址 | 一级黄色大片 | 天天爽天天爽天天爽 | 久久久激情网 | 欧美成人影音 | www一起操| 成人av网站在线观看 | 天天爱天天射天天干天天 | 黄色资源网站 | 97视频人人免费看 | 亚洲免费av网站 | 日韩大片在线免费观看 | 天天操天天操天天操天天操天天操 | 国产97视频 | 国产成人三级在线观看 | 日韩免费在线观看 | 开心丁香婷婷深爱五月 | 日韩av片免费在线观看 | 日韩有码第一页 | 国产精品69av | av丝袜美腿| 色综合久久久久久久久五月 | 日韩中午字幕 | 成人丁香花 | 超级碰碰碰视频 | 欧美性护士 | 亚洲视频在线看 | 色就是色综合 | 亚洲精品天天 | www.av小说 | 夜夜夜草 | 中文字幕乱在线伦视频中文字幕乱码在线 | 一级淫片在线观看 | 人人干人人爽 | 色av婷婷 | 日日草天天干 | 日韩美在线观看 | 久久国产视屏 | 日本最大色倩网站www | 天天干天天拍天天操 | 五月开心六月伊人色婷婷 | 99久久夜色精品国产亚洲 | 四虎在线观看视频 | 激情久久小说 | 黄av在线 | 国产精品美女久久久免费 | 区一区二区三在线观看 | 国产麻豆精品在线观看 | 99r在线精品 | 久久热首页 | 日韩在线第一 | 亚洲永久精品在线观看 | 久久五月婷婷丁香社区 | 亚洲免费在线观看视频 | 黄色网免费 | 亚洲永久国产精品 | 久久这里精品视频 | 国产精品9999 | 一区二区视频播放 | 国产精品久久久久久模特 | 69精品 | 精品久久一区二区三区 | 午夜免费福利片 | 亚洲精品乱码久久久久 | 天天久久夜夜 | 美女视频国产 | 久久久观看| 国产五月天婷婷 | 91视频免费国产 | www.xxxx欧美| 亚洲激情精品 | 亚洲国产中文字幕在线视频综合 | 激情综合五月天 | 成年人黄色免费网站 | 国产精品2018 | 91 在线视频 | 亚洲永久精品在线 | 欧美日韩1区 | 九九在线视频 | 久久精品久久精品久久39 | 欧美一进一出抽搐大尺度视频 | 天天久久综合 | 91精品视频免费 | 国产精久久久久久妇女av | 日韩中文字幕a | 日韩欧美精品一区 | 在线观看视频免费播放 | 日韩电影中文字幕在线 | 国产人免费人成免费视频 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 久久久久久久久久久国产精品 | 国产成人av在线 | 久久免费视频3 | 日本久久片 | 国产色就色 | 亚洲免费精彩视频 | 88av色 | 欧美一级看片 | 国产免费观看久久黄 | 欧美午夜久久 | 又黄又爽的免费高潮视频 | 91桃色免费观看 | 日韩av在线高清 | 精品国产一区二区三区男人吃奶 | 911国产在线观看 | 国产在线观看,日本 | 天堂在线视频免费观看 | 日韩精品网址 | 在线观看中文字幕dvd播放 | 久久精品中文字幕一区二区三区 | 黄色资源网站 | 久草在线视频网站 | av福利在线 | 久久久久久久久久久久久国产精品 | 国产精品一区二区久久 | 成人午夜在线电影 | 中文字幕xxxx | 在线不卡视频 | 免费看搞黄视频网站 | 久久99精品国产一区二区三区 | 福利视频一区二区 | 国产精品一区二区在线播放 | 五月天免费网站 | 精品视频123区在线观看 | 色在线国产 | 亚洲精品美女在线观看播放 | 伊人黄 | 久久久久久久免费观看 | 国产在线播放观看 | 亚洲日韩欧美视频 | av线上看| 日本免费久久高清视频 | 天天综合久久综合 | 欧美孕妇与黑人孕交 | 日韩理论在线播放 | 在线观看你懂的网站 | 日韩免费高清在线 | 97色在线观看免费视频 | 国产中文字幕在线观看 | 欧美一级片在线播放 | 色婷婷视频在线观看 | 综合精品久久久 | 久久一级电影 | 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美日韩亚洲精品在线 | 99精品视频在线观看视频 | 91桃色免费视频 | 天天综合久久 | 欧美一级激情 | 国产免费亚洲高清 | 午夜视频在线观看一区二区三区 | 婷婷六月网 | 91麻豆精品久久久久久 | 激情开心色 | 懂色av懂色av粉嫩av分享吧 | 国产精品久久久久久久久免费看 | 日精品 | 国产视频黄 | 又黄又爽又湿又无遮挡的在线视频 | 黄色成人毛片 | 国产精品久久久久久久久久久不卡 | 亚州av成人| 亚洲va欧美 | 精品国产欧美一区二区三区不卡 | 96精品视频 | 日韩国产在线观看 | 久久久首页 | 91福利社区在线观看 | 干天天| 久久精品1区 | 五月婷婷视频在线 | 国产涩涩在线观看 | 99免费在线观看视频 | 色资源网免费观看视频 | 欧洲色吧 | 亚洲高清视频在线 | 亚洲三级网站 | 激情五月婷婷综合 | 日日日视频 | www.91av在线| 久久久久久高潮国产精品视 | 色视频成人在线观看免 | 在线免费观看的av | 91视频亚洲 | 日韩综合视频在线观看 | 欧美色噜噜| 亚洲成av片人久久久 | 天堂激情网 | 天天爽天天碰狠狠添 | 亚洲精品国产拍在线 | 93久久精品日日躁夜夜躁欧美 | 国产成人一区二区三区久久精品 | 日日天天干 | 国产成人免费在线观看 | 最近中文字幕视频网 | 精品福利视频在线观看 | 免费大片黄在线 | 国内精品视频在线 | 摸阴视频 | 日本在线观看一区二区 | 久久久久看片 | 99精品免费 | 在线观看中文字幕2021 | 欧美日韩不卡一区二区三区 | 六月丁香婷婷在线 | 999热视频 | 西西www4444大胆视频 | 激情综合五月天 | 中文字幕在线播放一区二区 | 国产午夜在线观看视频 | 尤物一区二区三区 | 日韩视频中文字幕 | 婷婷丁香激情 | 97视频久久久 | 日韩久久在线 | 97电影在线看视频 | 香蕉精品视频在线观看 | 麻花豆传媒mv在线观看网站 | 日夜夜精品视频 | 最近日本中文字幕a | 极品中文字幕 | 91视频一8mav| 伊人久久影视 | 国产精品九九九九九 | 国产精品手机视频 | 亚洲欧美日韩一区二区三区在线观看 | 九九九热精品 | 在线一区电影 | 亚洲性xxxx | 亚洲成年片 |