精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何合理規劃Elasticsearch的索引

數據庫 MySQL
創建一個索引需要結合業務使用場景考量字段類型選擇和是否需要索引分詞,按照數據規模和業務增長速度來確定分片和副本的數量的大小。

一、背景

隨著ES在業務場景中的使用逐漸增多,平臺對ES集群的穩定性、管理、運維的壓力逐漸增大,通過日常的運維情況來看,發現用戶對ES的了解熟悉程度參差不齊,經常性的遇到索引創建不規范,或者參考別人索引的創建腳本進行創建索引,對索引沒有一個比較清晰的認知,對索引結構的規劃也寥寥無幾,為此,平臺使用了一些列手段來幫助用戶提前合理規劃模板,比如索引、模板的創建接入飛書審批流,平臺側會逐一結合業務場景和ES集群情況詳細溝通確定索引或者模板結構;又比如ES內核增加業務不停服的動態擴分片能力,旨在進行不合理索引的治理提升ES集群穩定性(索引一旦創建分片是不能修改的),我們內部改動ES源碼實現了不停服動態擴分片。

因此有必要從ES的索引講起,讓大家對ES的索引從概念、原理到使用有一個清晰的認知,希望日常業務場景中用到ES的同學能夠抽時間讀一下。當然文章避免不了存在主觀的分析,大家可以在文章底部進行評論或者私聊我們,一起探討。好了廢話不多說了,現在開始介紹。

二、什么是index(索引)

下面會針對索引的組成和基本結構結合官方文檔逐一介紹。

基本概念

index(索引)是索引是具有相似特征的文檔(Document)集合,類似于關系型數據庫中的表。每個索引都具有自己唯一的名稱與_id。并且可以進行不同的參數配置與mapping映射。以適應不同的業務場景。索引中的最小單位是文檔。每一條文檔(doc)都是一個json格式的數據對象。包含了實際的具體數據以及該數據所對應的元數據。文檔可以是結構化,半結構化或非結構化的數據。索引在elasticsearch中被用于存儲,檢索與分析數據。通過對索引進行搜索與聚合操作可以快速地找到相關的文檔。

官方描述:The index is the fundamental unit of storage in Elasticsearch, a logical namespace for storing data that share similar characteristics. After you have Elasticsearch deployed, you’ll get started by creating an index to store your data.

翻譯:索引是Elasticsearch中存儲數據的基本單位,是一個邏輯命名空間,用于存儲具有相似特性的數據。在部署Elasticsearch后,您將通過創建索引來存儲數據。

An index is a collection of documents uniquely identified by a name or an alias. This unique name is important because it’s used to target the index in search queries and other operations.

翻譯:索引是一種文檔集合,通過名稱或別名唯一標識。這個唯一名稱非常重要,因為它用于在搜索查詢和其他操作中定位索引。

三、索引結構詳解

索引結構詳解

圖片圖片

創建索引結構
PUT /index_demo
{
  "aliases" : {
    "index_demo_alias" : { }
  },
  "mappings" : {
    "properties" : {
      "id" : {
        "type" : "long"
      },
      "name" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "status" : {
        "type" : "keyword"
      },
      "createDate" : {
        "type" : "long"
      }
    }
  },
  "settings" : {
    "index" : {
      "refresh_interval" : "5s",
      "number_of_shards" : "3",
      "number_of_replicas" : "1"
    }
  }
}

ignore_above屬性說明:

- ignore_above的默認值通常為256個字符,這意味著任何超過256個字符的字符串將不會被索引或存儲。

- 該參數僅適用于keyword類型的字段,因為這些字段主要用于過濾、排序和聚合操作,不需要進行全文搜索。

- ignore_above的值以字符為單位計算,包括英文字符和漢字。例如,一個漢字和一個英文字符都算作一個字符。

- 性能優化:通過限制字段長度,可以減少索引大小和查詢時間,從而提高性能。

- 避免資源浪費:對于包含大量數據的字段,如日志文件中的長字符串,可以通過ignore_above避免不必要的存儲和索引。

官方描述:Strings longer than the ignore_above setting will not be indexed or stored. For arrays of strings, ignore_above will be applied for each array element separately and string elements longer than ignore_above will not be indexed or stored.

別名

別名將其生命置于群集狀態內,由主節點(master node) 管理; 這意味著如果你有一個名為 xiaoming 的別名指向一個名為 potato 的索引,那么開銷就是群集狀態映射中的一個額外鍵,它將名稱 xiaoming 映射到具體的索引字符串。這意味著與其他指數相比,別名的重量要輕得多; 可以維護數千個而不會對集群產生負面影響。

官方原話:An alias points to one or more indices or data streams. Most Elasticsearch APIs accept an alias in place of a data stream or index name.

Aliases enable you to:

- Query multiple indices/data streams together with a single name

- Change which indices/data streams your application uses in real time

- Reindex data without downtime

翻譯:別名(Alias)可以指向一個或多個索引或數據流。大多數Elasticsearch API接受別名代替數據流或索引名稱。別名的功能包括:

- 使用單一名稱查詢多個索引/數據流;

- 實時更改應用程序使用的索引/數據流;

- 在不中斷服務的情況下進行擴分片。

可以看到索引有上面三個作用,平臺建議為每個索引添加別名(動態擴分片依賴別名)。添加別名可以在索引創建時和創建后再添加,即索引可以隨時添加,但是平臺還是建議你在創建索引時候指定別名,避免動態擴分片時候再去修改代碼重新部署應用。

添加別名的幾種方式

1. 創建索引時指定別名

PUT /test_index
{
    "settings" : {
        "number_of_shards" : 1,
        "number_of_replicas" : 1
    },
    "aliases":{"test_alias":{}},
    "mappings" : {
        "properties" : {
            "field1" : { 
                "type" : "text" 
            },
            "createdAt": {
                "type": "date",
                "format": "yyyy-MM-dd HH:mm:ss"
           }
        }
    }
}

2. 已存在的索引添加別名

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "test_index", # 索引名
        "alias": "test_alias" # 別名
      }
    }
  ]
}

3. 別名更換

別名更換可以零停機進行動態擴分片。

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "existing_index",
        "alias": "test_alias" # 別名
      },
      {
        "remove": {
          "index": "old_index",
          "alias": "old_test_alias" # 別名
        }
      }
    }
  ]
}

映射

建立索引時需要定義文檔的數據結構,這種結構叫作映射。在映射中,文檔的字段類型一旦設定后就不能更改。因為字段類型在定義后,elasticsearch已經針對定義的類型建立了特定的索引結構,這種結構不能更改。借助映射可以給文檔新增字段。另外,elasticsearch還提供了自動映射功能,即在添加數據時,如果該字段沒有定義類型,elasticsearch會根據用戶提供的該字段的真實數據來猜測可能的類型,從而自動進行字段類型的定義。

字段類型

字段類型(Field Type)是定義數據格式和索引方式的重要概念,它決定了字段在索引中的存儲、搜索和聚合行為。下面針對日常用到最多的三個字段類型進行解釋,text、keyword、Numeric(Integer、Long)。

Text

text字段類型是Elasticsearch中用于全文搜索的核心字段類型。它通過分析器將文本拆分為單個詞,并存儲為倒排索引,適用于非結構化文本的搜索和分析。然而,由于其經過分析器處理,不適用于排序和聚合操作。

1. 特點

  • 全文搜索:text字段類型主要用于存儲和索引可讀的文本內容,例如郵件正文、產品描述、新聞文章等。這些字段會被分析器(analyzer)處理,將字符串拆分為單個詞(term),以便進行全文搜索。
  • 分詞處理:text字段支持分詞器(tokenizer),可以根據語言和需求選擇不同的分詞策略(如標準分詞器、正則表達式分詞器等)。分詞后的結果會存儲為倒排索引,便于快速檢索。
  • 不適用于排序和聚合:由于text字段經過分析器處理,其原始字符串無法直接用于排序或聚合操作。如果需要排序或聚合,通常需要結合keyword字段類型。
  • 支持多字段映射:可以通過多字段(multi-field)映射同時使用text和keyword類型,以滿足全文搜索和精確匹配的需求。

2. 使用場景

  • 全文搜索:適用于需要對文本內容進行模糊搜索的場景,例如搜索引擎、新聞網站、商品搜索等。
  • 文本分析:可以結合分析器(如TF-IDF、BM25等)進行文本相似性搜索或評分計算。
  • 日志分析:用于分析和搜索日志文件中的文本內容,提取關鍵信息。
  • 內容管理:在內容管理系統中,用于存儲和搜索文檔、文章等內容。

3. 官方建議

Use a field as both text and keyword

Sometimes it is useful to have both a full text (text) and a keyword (keyword) version of the same field: one for full text search and the other for aggregations and sorting. This can be achieved with multi-fields.

通過多字段映射同時使用text和keyword類型,可以實現全文搜索和精確匹配的雙重需求。

4. 平臺建議

  • 明確業務使用場景,如果不需要進行模糊搜索的話,設置為keyword類型,來避免分詞帶來的存儲開銷,增加系統壓力。

Keyword

keyword字段類型是一種用于存儲和索引結構化數據的字段類型。

1. 特點

  • 不進行分詞:keyword字段類型不會對字段值進行分詞處理,而是將其作為整體存儲。這意味著字段值會被原樣存儲到倒排索引中,不會被拆分成單獨的單詞或短語。
  • 精確匹配:由于字段值不進行分詞,keyword字段類型非常適合用于精確匹配查詢,例如查找特定的電子郵件地址、身份證號或狀態碼等。
  • tips:在term查詢中可以結合case_insensitive屬性,忽略大小寫對值進行搜索,但不支持terms查詢。
  • 支持排序和聚合:keyword字段類型可以用于排序和聚合操作,例如按狀態碼統計數量或按用戶ID進行分組。
  • 存儲效率高:由于不需要分詞,keyword字段類型的存儲開銷較低,適合存儲大量具有唯一性或固定值的字段。

2. 使用場景

  • 精確查詢:適用于需要精確匹配的場景,例如查找特定的電子郵件地址、身份證號、狀態碼等。
  • 排序和聚合:當需要對數據進行排序或聚合時,keyword字段類型是理想選擇。例如,按用戶ID排序或按狀態統計數量。
  • 標簽和分類:用于存儲標簽、分類等結構化數據,例如用戶畫像標簽(學生、IT、教師等)。
  • 唯一性字符串:適用于存儲具有唯一性的字符串,如SpuId、貨號、得物訂單號等。

Numeric

數值類型,包含long、interger、short、byte、double、float等數字類型。

1. 特點

  • 整數類型:適用于范圍查詢、排序和聚合操作。由于整數類型占用空間較小,推薦優先使用范圍較小的類型(如 integer 或 long)以提高索引和搜索效率。
  • 浮點類型:適用于需要高精度的計算場景。如果數據范圍較大或精度要求不高,可以使用 scaled_float 類型并設置合適的 scale 值。
  • 選擇合適的類型:在滿足需求的前提下,盡量選擇范圍較小的類型以節約存儲空間和提升性能。

tips

  如果確定業務使用場景,建議keyword代替數值類型字段,如果不確定則采用多字段,keyword在term查詢中性能更佳。

圖片圖片

針對字段類型選擇的幾條建議

  1. 針對Text和數值類型場景的字段,盡量改成keyword字段類型,來提升查詢速度。
  2. 在不確定業務查詢有哪些需求的情況下,設置多字段類型keyword。
  3. 枚舉字段沒有特殊業務場景下,統一使用keyword字段類型。
  4. 業務不需要范圍查詢的話,使用keyword字段類型(支持聚合和排序的)。
  5. 對keyword字段類型進行模糊查詢會性能較差,使用多字段類型wildcard來模糊查詢性能更高。
  6. 盡量不要使用聚合查詢,text的fielddata會加大對內存的占用,如有需求使用,建議使用keyword。
  7. 需要中文分詞的話,不要使用默認分詞器,推薦使用ik_smart,ik_max_word會生成更多的分詞,其中含有重復的內容,需謹慎使用。
  8. 時間字段不要使用keyword,除非點查,推薦使用date/long類型,支持范圍查詢,建議精確到分鐘,會提高查詢效率。
  9. keyword字段類型不適用于模糊wildcard查詢,建議使用wildcard字段類型。

圖片圖片

  1. 日期的查詢條件為now時,并不能有效利用緩存,盡量換成絕對時間值。
  2. ES默認字段個數最大1000,但建議不要超過100,對于不需要建立索引的字段,不寫入ES。
  3. 將不需要建立索引的字段index數據設置為false,對字段不分詞,不索引可以減少很多運算操作。
  4. 不建議或者禁止每次寫入后立馬進行顯示的refresh,refresh會帶來較高的磁盤IO,和CPU消耗,甚至有可能導致ES宕機。
  5. 持續補充......

索引結構與關系性數據庫對比

圖片圖片

四、索引(Shard)結構-分片與副本

什么是Shard

基本概念

分片是管理文檔的一個數據單元,分片是Elasticsearch中邏輯概念。ES內部把索引中文檔進行按照一定路由規則(文檔_id的hash值與分片數取余)進行路由到不同的存儲數據單元,存儲數據單元就是分片。你可以理解為MySQL的分表。

ElS的邏輯分片就是一個Lucene索引,一個ES索引是分哦的集合,當ES在索引中搜索的時候,他發送查詢到每一個屬于索引的分片(Lucene索引)進行檢索,最后合并每個分片的結果得到一個全局的結果集。

分片劃分

分片分為primary shard(主分片)和replicate shard(副本分片)。

  • 主分片:索引的基本數據存儲單元,每個索引被水平拆分為多個主分片,每個分片都是互相獨立的。包含一部分索引的數據與索引的結構(segement)。每個分片都可以在集群中不同的節點上進行移動與復制。以提高數據的可用性與容錯性。
  • 副本分片:主分片的完整拷貝,用于冗余存儲和容災,副本分片和主分片在ES節點數足夠的情況下不會同時存在一個ES節點。

注意:單分片的記錄條數不要超過上限2,147,483,519。

  • 主副分片分布示意圖

圖片圖片

分片的功能

1. 主分片

  • 數據存儲與寫入:所有文檔通過路由算法(如 hash(_id) % num_primary_shards(主分片數))分配到主分片,主分片負責處理索引、更新、刪除等寫操作。
  • 擴展性:通過增加節點和分片分布,實現數據的水平擴展。
  • 不可變性:主分片數量在索引創建時通過 number_of_shards 參數設定,創建后無法修改(需重建索引)。

2. 副本分片

  • 高可用性:當主分片所在節點宕機時,副本分片自動升級為主分片(和對應的主分片不在一個節點),避免數據丟失和服務中斷。
  • 讀取負載均衡:副本分片可并行處理查詢請求,提升讀吞吐量。
  • 動態調整:副本分片數量通過 number_of_replicas 參數動態配置,支持按需擴展或縮減。

分片數規劃

分片的基本概念和功能咱們咱們已經了解,在日常ES運維過程中發現不少同學對分片和數量的設置沒有什么概念,照搬其他同學的比較多,這是嚴重錯誤的。咱們在實際的業務場景中也要做好分片(主副)數量的規劃,來避免慢查、數據傾斜、磁盤容量浪費等問題。

 當索引分片數量過多時,可能會對ES性能產生不利影響。因為每個分片都需要一定量的內存來存儲索引數據和緩存,從而導致內存消耗增加。另外當查詢或寫入數據涉及多個分片時,ES需要在節點之間進行傳輸和協調數據,從而增加網絡開銷,這也會導致查詢和寫入性能的降低。可見分片數量的選擇需要慎重考慮。

索引在不同場景中,其分片分設置是不一樣的,接下來咱們會在下面四個場景中來進行闡述。

讀場景

索引單分片20g~40g,盡量減少分片數,可以降低熱點,因為當分片數過多時,就容易出現長尾子請求,即有可能部分子請求因ES集群節點異常、Old GC、網絡抖動等延遲響應,導致整個請求響應緩慢。另一方面,拆分過多的子請求無法提升數據節點請求吞吐,不能充分利用 CPU。在盡量減少主分片數的情況下,同時也可以適當增加副本數,從而提升查詢吞吐。

寫場景

索引單分片10g~20g,小分片更有利于數據寫入。小分片維護的segment數量遠低于大分片,在數據刷新落盤與段合并上更有優勢。由于單分片數據量更少,在寫入時數據可以更快地緩存至內存中并通過refresh參數更快的持久化至磁盤中。

日志存儲場景

  • 需要考慮每日寫入集群的數據總量大小。通過過數據量與數據節點數評估索引分片數量。
  • 在日志存儲后是否需要兼顧查詢與聚合性能。合理大小的分片數據量能夠提高查詢效率。
  • 根據日志持久化策略,采用按月/周/天的策略生成索引。并使用ILM(索引生命周期管理策略)動態對日志索引進行完整生命周期的管理。
  • 建議副本數設置為0來減少磁盤容量成本。

小數據量索引業務場景

對于數據量比較小的索引,增加索引分片數并不一定會帶來性能提升,反而可能會帶來一些負面影響。

首先,增加索引分片數會增加集群的管理開銷,包括維護分片的狀態、備份和恢復分片等。如果索引數據量比較小,這種開銷可能會超過性能提升帶來的收益。

其次,增加索引分片數可能會導致數據分布不均衡,從而影響查詢性能。具體來說,如果某些分片中的數據量過小,可能會導致這些分片的查詢性能比其他分片差。此外,如果查詢涉及到多個分片,數據的合并操作也會增加查詢時間。

因此,對于數據量比較小的索引,在查詢場景下,通常建議將分片數設置為1或2,以避免不必要的開銷和性能問題。如果需要提高查詢性能,可以考慮配置索引副本,優化查詢語句或使用緩存。

通用場景

  • 根據實際業務場景提前規劃預算索引數據量,做好分片數量規劃(索引一旦創建無法修改分片數)。
  • 分片數量:推薦公式:主分片數 ≈ 總數據量 / 單分片容量上限(官方建議單分片10-50GB,單個分片文檔數在1億條以內,日志場景可放寬至50-100GB)。

注意:分片數量平臺強烈建議或者要求設置為ES data節點角色的整數倍。

  • 副本數量:增加副本數可提升讀性能,但會降低寫入速度(需同步更多副本),因此在讀場景可以酌情考慮。
  • 如果索引是時序類,或者數據過大,單分片幾百G,可以結合生命周期和索引模板進行索引滾動管理。
  • 平臺不建議使用自動移routing值進行分片,默認使用文檔_id就好。

原因:使用自定義routing值進行路由分片的話很容易產生數據傾斜,另外ES內部會多一些計算邏輯來如何進行分片路由,在寫入較高的場景下也會有一定的性能損耗。

  • 控制分片數量,分片數不是越多越好,過多分分片,也會造成ES集群元數據管理的壓力,降低系統的性能損耗。
  • 設置total_shards_per_node,將索引壓力分攤至多個節點。
  • index.routing.allocation.total_shards_per_node參數可以限制每個節點上的shard數量,從而將索引的壓力分攤到多個節點,這樣可以提高集群性能和可用性,避免某個節點過載導致整個集群出現問題。
  • index.routing.allocation.total_shards_per_node是一個索引級別設置(創建索引和對已有索引進行設置),語法如下:
PUT <index_name>/_settings
{
    "index.routing.allocation.total_shards_per_node":<number_of_shards>
}
<index_name>為索引名字,<number_of_shards>表示每個節點上該索引的分片數量。

持續調整索分片

對于集群分片的調整,通常不是一蹴而就的。隨著業務的發展,不斷新增的子業務 或 原有子業務規模發生突變,都需要持續調整分片數量。

索引與資源消耗的關系

分片數量與內存消耗

每個分片都是獨立的Lucene索引,需要維護倒排索引、緩存等內存結構。分片數量過多會導致以下問題:

  • 內存占用激增:每個分片默認占用約10-30MB內存(含元數據),數千分片可能消耗數十GB內存。
  • 文件句柄耗盡:集群總分片數過多會占用大量文件描述符,可能觸發"too many open files"錯誤。
  • CPU熱點問題:分片分配不均會導致部分節點負載過高。

Segment碎片化

分片由多個segment組成,segment數量過多會:

  • 增加IO壓力:查詢需遍歷多個segment文件。
  • 占用堆內存:每個segment需加載部分元數據到內存,百萬級segment可能消耗數GB內存。
  • 影響GC效率:頻繁的segment合并會觸發Full GC。

五、總結

創建一個索引需要結合業務使用場景考量字段類型選擇和是否需要索引分詞,按照數據規模和業務增長速度來確定分片和副本的數量的大小。索引的結構直接影響集群的穩定性,因此我們在創建索引的時候要養成習慣,作為技術方案的一環去仔細打磨這樣才能保證線上的穩定性。

大家工作中遇到的一些穩定性問題,和使用上的一些問題都可以找我們一起探討,尋找最優解。

責任編輯:武曉燕 來源: 得物技術
相關推薦

2019-02-19 10:25:28

JVM性能工具

2024-03-01 09:57:19

數據庫檢索項目

2010-10-13 15:59:21

MySQL索引

2016-09-07 15:02:03

ElasticSear索引速度

2021-03-28 17:14:38

數據庫APP技術

2020-09-28 15:34:38

ElasticSear索引MySQL

2024-07-26 10:42:30

2011-04-01 15:36:24

索引SQL Server

2009-07-04 09:09:57

綜合布線樓層規劃

2009-01-07 09:22:00

局域網組建規劃

2009-06-10 13:42:20

東華軟件流量分析網絡管理

2023-06-08 11:30:00

管理ITCIO

2009-04-02 11:54:17

2021-12-13 01:40:29

ElasticSear倒排索引

2009-10-14 14:22:36

綜合布線系統

2011-06-28 14:02:49

表分區

2010-11-29 14:24:06

Linux軟件管理

2015-05-18 09:54:39

2023-09-28 09:03:56

開源搜索分析引擎

2021-09-26 10:22:12

工具選型軟件ERP軟件
點贊
收藏

51CTO技術棧公眾號

绿色成人影院| 亚洲av综合色区无码一二三区| 久草成人资源| 欧美精品免费视频| 国产女教师bbwbbwbbw| 欧美77777| 日本伊人精品一区二区三区观看方式 | 91麻豆视频网站| 国产精品一区=区| 久久久久性色av无码一区二区| 日韩欧美黄色| 91精选在线观看| 丰满少妇被猛烈进入高清播放| 欧美一级二级三级区| 成人精品视频一区二区三区| 国产精品久久一区| 免看一级a毛片一片成人不卡| 免费欧美一区| 欧美xxxxxxxx| 五月婷婷六月丁香激情| 538视频在线| 综合久久国产九一剧情麻豆| 久久综合精品一区| 精品久久国产视频| 日本成人超碰在线观看| 久久久久久亚洲精品中文字幕 | 国产欧美日韩精品一区二区三区| 91精品国产综合久久香蕉麻豆| 亚洲美免无码中文字幕在线 | 欧美激情第6页| 一级黄色录像毛片| 亚欧洲精品视频在线观看| 日韩一级黄色大片| 国产精品v日韩精品v在线观看| 牛牛精品一区二区| 夜色激情一区二区| 精品91一区二区三区| 成人网视频在线观看| 99久久国产综合精品色伊| 亚洲一区二区三区xxx视频| 最近中文字幕av| 老司机午夜精品视频| 久久久久久尹人网香蕉| 欧美成人手机视频| 亚洲电影影音先锋| 日韩天堂在线视频| 天堂av免费在线| 日韩美女一区二区三区在线观看| 亚洲三级av在线| 欧美色图亚洲激情| 欧洲精品一区| 亚洲精品久久视频| 漂亮人妻被黑人久久精品| 亚洲专区**| 欧美电影免费观看完整版| 久久久福利影院| 91成人短视频在线观看| 欧美日本国产视频| 五月激情五月婷婷| 国产精品视频一区二区三区综合| 欧美精品1区2区| 成人亚洲免费视频| 国产午夜亚洲精品一级在线| 日韩视频免费观看高清完整版在线观看 | 久久久久国产精品麻豆ai换脸 | www 日韩| 中文字幕一区二区三区四区| av动漫免费观看| 成人免费看片| 亚洲一区二区视频在线观看| 亚洲 欧美 综合 另类 中字| 欧亚av在线| 欧亚洲嫩模精品一区三区| 麻豆三级在线观看| 99er精品视频| 欧美精品一区二区三区蜜桃| 国产在线观看无码免费视频| 欧美日韩老妇| 萌白酱国产一区二区| 久久久久久av无码免费网站| 亚洲精品影视| 国产精品高潮呻吟久久av无限| 在线观看黄色国产| 精品一区二区三区免费| 99精品欧美一区二区三区| 欧美一级在线免费观看 | 黄色免费一级视频| 欧美黄免费看| 啪一啪鲁一鲁2019在线视频| 制服丝袜在线一区| 国产91丝袜在线18| 开心色怡人综合网站| 91美女视频在线| 亚洲综合在线第一页| 久久久久久久久久久免费视频| 精品自拍视频| 亚洲第一偷拍网| 激情六月丁香婷婷| 中文字幕第二区| av在线不卡顿| 久久久视频精品| 特级西西444www高清大视频| 国产成人av一区二区三区在线 | 2024亚洲男人天堂| 91亚洲国产成人久久精品麻豆| 粉嫩蜜臀av国产精品网站| 欧美日韩综合久久| 欧美6一10sex性hd| 欧美三级电影在线看| 在线看黄色的网站| 日韩伦理视频| 日韩**中文字幕毛片| 国产不卡av在线播放| 久久精品人人做人人爽97| 国产日产欧美一区二区| 欧美三级精品| 亚洲国产精品人人爽夜夜爽| 国产黄色片在线| 免费一级欧美片在线播放| 亚洲xxxxx| av在线电影院| 色综合天天综合| 亚洲婷婷在线观看| 久久久国产精品| 国产精品普通话| 欧美少妇另类| 午夜成人在线视频| 国产调教打屁股xxxx网站| 日韩免费一区| 国产精品电影观看| 青青草视频在线免费观看| 亚洲高清不卡在线观看| 91丨porny丨九色| 93在线视频精品免费观看| 国产精品白嫩美女在线观看| 四虎影院在线域名免费观看| 亚洲图片欧美视频| 中文字幕第六页| 香蕉精品视频在线观看| 成人av在线亚洲| 香蕉视频网站在线观看| 色视频欧美一区二区三区| 久久久久亚洲AV成人无码国产| 伊人成人网在线看| 99中文字幕| 欧美午夜大胆人体| 欧美一级淫片007| 538精品在线观看| 国产乱子轮精品视频| 99精品视频网站| 成年永久一区二区三区免费视频 | 国产精品一区hongkong| 欧美成人a在线| 国产在线拍揄自揄拍| 国产69精品久久久久毛片| 日本精品福利视频| 一区二区三区亚洲变态调教大结局| 久久成年人免费电影| 国产口爆吞精一区二区| 亚洲免费av高清| 日批视频免费看| 亚洲欧洲一区二区天堂久久| 久久精彩视频| 性欧美hd调教| 色偷偷9999www| 99riav国产| 亚洲一区二区三区在线看| 亚洲av无码专区在线播放中文| 在线观看日韩av电影| 久久久久高清| 久久电影天堂| 久久99国产综合精品女同| 亚洲精品一区二区三区新线路 | a在线视频观看| 一区二区美女| 国产精品稀缺呦系列在线| 国产素人视频在线观看| 欧美成人vps| 性色av免费观看| 中文字幕综合网| 一级全黄裸体片| 鲁大师影院一区二区三区| 亚洲综合五月天| 91在线一区| 国产91久久婷婷一区二区| 成人高清免费在线| 日韩av影片在线观看| 最好看的日本字幕mv视频大全| 综合久久久久久| 自拍视频一区二区| 青青草娱乐在线| 岛国成人av| 久久99久久久久久久噜噜| 粉嫩小泬无遮挡久久久久久| 色综合色狠狠综合色| 永久免费看片视频教学| 成人黄色综合网站| 美女少妇一区二区| 亚洲黄色免费| 色中文字幕在线观看| 久久影院资源站| 91精品国产综合久久久久久蜜臀| av在线加勒比| 亚洲一区视频在线| 亚洲丝袜制服诱惑| 亚洲一区二区三区在线| 欧美久久久久久蜜桃| 亚洲色图第一页| 日韩**中文字幕毛片| 激情小说综合区| 欧日韩免费视频| 亚洲美女精品视频| 日本xxx在线播放| 菠萝菠萝蜜在线观看| 日韩一区二区高清| 无码免费一区二区三区| 亚洲资源中文字幕| 亚洲色图欧美色| av午夜精品一区二区三区| 怡红院亚洲色图| 麻豆九一精品爱看视频在线观看免费| 国产片侵犯亲女视频播放| 精品视频免费在线观看| 免费精品视频一区二区三区| 综合欧美亚洲| 亚洲自拍小视频| 四虎精品在线观看| 国产精品久久久久久久午夜| 激情黄产视频在线免费观看| 欧美激情一区二区三区在线视频观看| 欧美成人高清在线| 少妇高潮久久久久久潘金莲| 国产女主播在线写真| 日韩av中文在线| 天天操天天干天天干| 精品久久一二三区| av网站免费大全| 欧美一区二区三区播放老司机| 一区二区自拍偷拍| 欧美日韩久久久久久| 特级西西444www高清大视频| 欧美综合久久久| 男操女视频网站| 欧美性猛片xxxx免费看久爱| 日本精品入口免费视频| 色综合久久中文综合久久97| 无码人妻精品一区二区蜜桃色欲| 黑人巨大精品欧美一区二区三区| 日韩成人高清视频| 五月婷婷久久综合| 日韩成人免费在线观看| 无码av中文一区二区三区桃花岛| 日韩精品一区二区在线播放 | 久草免费在线观看视频| 亚洲精品久久嫩草网站秘色| 精国产品一区二区三区a片| 一区二区三区在线影院| 69精品久久久| 激情久久av一区av二区av三区 | 欧美午夜不卡| 日韩精品极品毛片系列视频| 国产日韩欧美一区二区东京热| 91精品国产麻豆国产自产在线 | 日韩av电影资源网| 国产精品久久久久久久久久免费| 99热播精品免费| 成人免费福利在线| avtt综合网| 欧美剧情片在线观看| 国产成人无码精品| 色综合一个色综合亚洲| 国产精品第6页| 欧美日韩国产综合一区二区| aaa一区二区三区| 精品国产乱码久久久久久蜜臀| 神马亚洲视频| 最近中文字幕日韩精品| av色综合久久天堂av色综合在| 亚洲97在线观看| 国精产品一区一区三区四川| 91欧美日韩一区| 丁香5月婷婷久久| 日韩影院一区| 欧美日韩中文| 激情综合网俺也去| 国产麻豆视频一区| 三级男人添奶爽爽爽视频| 国产日韩欧美综合在线| 日本高清一二三区| 欧美性生活大片免费观看网址| 中文字幕av在线免费观看| 欧美一级理论片| 国产一级二级三级在线观看| 久久久精品999| 乡村艳史在线观看| 亚洲伊人第一页| 精品久久中文| 六月婷婷激情综合| 日韩va亚洲va欧美va久久| 国产一级免费片| 一区在线中文字幕| 欧美 日韩 精品| 精品久久一区二区三区| 在线视频91p| 欧美又大又粗又长| 国产电影一区| 色狠狠久久av五月综合| 亚洲激情婷婷| 性生活一级大片| 日本一区免费视频| 91精品国产乱码在线观看| 91精品国产综合久久久久久久 | 黄色片在线免费| 成年人国产精品| 久久久久久久久久网站| 在线观看一区不卡| 天堂在线中文网| 另类视频在线观看| 97精品国产99久久久久久免费| 久久久精品有限公司| 亚洲午夜久久久久久尤物| 制服丝袜中文字幕第一页| 日本一区二区视频在线观看| 97免费在线观看视频| 亚洲国产精品久久久| 丝袜在线视频| 亚洲影院色在线观看免费| 四季av一区二区凹凸精品| 玩弄japan白嫩少妇hd| 99久久99久久免费精品蜜臀| 久热精品在线观看| 日韩欧美一区二区不卡| 免费a级人成a大片在线观看| 国产精品嫩草影院一区二区| 国产欧美日韩精品一区二区免费| 九色在线视频观看| 91麻豆免费观看| 久久一区二区三区视频| 日韩电影中文字幕在线| 川上优av中文字幕一区二区| 国产乱码精品一区二区三区卡 | 亚洲美女精品一区| 国产精品久久久午夜夜伦鲁鲁| 中文字幕国内精品| 不卡亚洲精品| 日韩精品av一区二区三区| 男人的j进女人的j一区| 成人性视频免费看| 欧美日韩免费视频| а√天堂官网中文在线| 69堂成人精品视频免费| 国产精品大片免费观看| 91丝袜在线观看| 岛国精品视频在线播放| 黄色小视频在线观看| 国产精品露脸自拍| 日韩系列欧美系列| 91插插插影院| 亚洲最快最全在线视频| 日韩一区二区三区在线观看视频| 欧美性受xxxx黑人猛交| 深爱激情综合| 国产精品区在线| 一区二区国产视频| 亚洲色图欧美视频| 国产精品久久久久影院日本| 婷婷伊人综合| 黄色av电影网站| 欧美性开放视频| 色的视频在线免费看| 成人三级在线| 亚洲综合99| 一级片黄色录像| 欧美大肚乱孕交hd孕妇| 一区二区三区电影大全| 色之综合天天综合色天天棕色| 国内精品免费**视频| 精品人妻在线播放| 亚洲欧美日韩一区在线| 亚洲国产91视频| 免费毛片网站在线观看| 国产欧美一区二区在线| 精品人妻aV中文字幕乱码色欲| 欧美一区第一页| 无需播放器亚洲| 亚洲av无码成人精品国产| 欧美日韩国产成人在线免费| 爱情岛亚洲播放路线| 色999日韩自偷自拍美女| 国产成人在线看| 日本一本在线观看| 欧美黑人性猛交| 国产免费av一区二区三区| 国产成人av片| 欧美色综合影院| 男人av在线播放| 99久久99久久精品| 国产午夜亚洲精品午夜鲁丝片| 精品人妻少妇AV无码专区| 国产mv久久久|