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

得物社區億級ES數據搜索性能調優實踐

開發 后端
ES在大結果集指定字段排序的場景下性能不佳,我們使用時應該盡量避免出現這種場景。如果無法避免,合適的IndexSorting設置能大幅提升排序性能。

1、背景

20年以來內容標注結果搜索就是社區中后臺業務的核心高頻使用場景之一,為了支撐復雜的后臺搜索,我們將社區內容的關鍵信息額外存了一份到Elasticsearch中作為二級索引使用。隨著標注業務的細分、迭代和時間的推移,這個索引的文檔數和搜索的RT開始逐步上升。

下面是這個索引當前的監控情況。

圖片

本文介紹社區利用IndexSorting,將億級文檔搜索性能由最開始2000ms優化到50ms的過程。如果大家遇到相似的問題和場景,相信看完之后一定能夠一行代碼成噸收益。

2、探索過程

2.1 初步優化

最開始需求很簡單,只需要取最新發布的動態分頁展示。這時候實現也是簡單粗暴,滿足功能即可。查詢語句如下:

GET /content-alias/_search
{
  "track_total_hits": true,
  "sort": [
    {
      "publish_time": {
        "order": "desc"
      }
    }
  ],
  "size": 10
}

由于首頁加載時沒加任何篩選條件,于是變成了從億級內容庫中找出最新發布的10條內容。

針對這個查詢很容易發現問題出現在大結果集的排序,要解決問題,自然的想到了兩條路徑:

  • 去掉sort
  • 縮小結果集

經過用戶訴求和開發成本的權衡后,當時決定“先扛住,再優化”:在用戶打開首頁的時候,默認增加“發布時間在最近一周內”的篩選條件,這時語句變成了:

GET /content-alias/_search
{
  "track_total_hits": true,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "publish_time": {
              "gte": 1678550400,
              "lt": 1679155200
            }
          }
        }
      ]
    }
  },
  "sort": [
    {
      "publish_time": {
        "order": "desc"
      }
    }
  ],
  "size": 10
}

這個改動上線后,效果可以說是立竿見影,首頁加載速度立馬降到了200ms以內,平均RT60ms。這次改動也為我們減小了來自業務的壓力,為后續的優化爭取了不少調研的時間。

雖然搜索首頁的加載速度明顯快了,但是并沒有實際解決根本問題——ES大結果集指定字段排序還是很慢。對業務來說,結果頁上的一些邊界功能的體驗依舊不能盡如人意,比如導出、全量動態的搜索等等。這一點從監控上也能夠較明顯的看出:慢查詢還是存在,并且還伴隨著少量的接口超時。

圖片

老實說這個時期我們對于ES的了解還比較基礎,只能說會用、知道分片、倒排索引、相關性打分,然后就沒有了。總之我們有了方向,開始奮起直追。

2.2 細致打磨

2.2.1 知識積累

帶著之前遺留的問題,我們開始開始重新出發,從頭學習ES。要優化搜索性能,首先我們要知道的是搜索是怎么做的。下面我們就以一個最簡單的搜索為例,拆解一下整個搜索請求的過程。

(1)搜索請求
GET /content-alias/_search
{
  "track_total_hits":false,
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "category_id.keyword": "xxxxxxxx"
          }
        }
      ]
    }
  }, 
  "size": 10
}

精確查詢category_id為"xxxxxxxx"的文檔,取10條數據,不需要排序,不需要總數

總流程分3步:

  1. 客戶端發起請求到Node1
  2. Node1作為協調節點,將請求轉發到索引的每個主分片或副分片中,每個分片在本地執行查詢。
  3. 每個節點返回各自的數據,協調節點匯總后返回給客戶端

如圖可以大致描繪這個過程:

圖片

我們知道ES是依賴Lucene提供的能力,真正的搜索發生在Lucene中,還需要繼續了解Lucene中的搜索過程。

(2)Lucene

Lucene中包含了四種基本數據類型,分別是:

  • Index:索引,由很多的Document組成。
  • Document:由很多的Field組成,是Index和Search的最小單位。
  • Field:由很多的Term組成,包括Field Name和Field Value。
  • Term:由很多的字節組成。一般將Text類型的Field Value分詞之后的每個最小單元叫做Term。

在介紹Lucene index的搜索過程之前,這里先說一下組成Lucene index的最小數據存儲單元——Segment。

Lucene index由許許多多的Segment組成,每一個Segment里面包含著文檔的Term字典、Term字典的倒排表、文檔的列式存儲DocValues以及正排索引。它能夠獨立的直接對外提供搜索功能,幾乎是一個縮小版的Lucene index。

(3)Term字典和倒排表

圖片

上圖是Term字典和其倒排表的大致樣子

當然這里還有些重要數據結構,比如:

  • FST:term索引,在內存中構建。可以快速實現單Term、Term范圍、Term前綴和通配符查詢。
  • BKD-Tree:用于數值類型(包括空間點)的快速查找。
  • SkipList:倒排表的數據結構

這里面的細節比較多,感興趣的可以單獨了解,這里不影響我們的整體搜索流程,不過多贅述。

有了Term字典和倒排表我們就能直接拿到搜索條件匹配的結果集了,接下來只需要通過docID去正排索引中取回整個doc然后返回就完事兒了。

這是ES的基本盤理論上不會慢,我們猜測慢查詢發生在排序上。那給請求加一個排序會發生什么呢?比如:

GET /content-alias/_search
{
  "track_total_hits":false,
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "category_id.keyword": "xxxxxxxx"
          }
        }
      ]
    }
  }, 
  "sort": [
    {
      "publish_time": {
        "order": "desc"
      }
    }
  ],
  "size": 10
}

通過倒排表拿到的docId是無序的,現在指定了排序字段,最簡單直接的辦法是全部取出來,然后排序取前10條。這樣固然能實現效果,但是效率卻是可想而知。那么Lucene是怎么解決的呢?

(4)DocValues

倒排索引能夠解決從詞到文檔的快速映射,但需要對檢索結果進行分類、排序、數學計算等聚合操作時需要文檔號到值的快速映射。而正排索引又過于臃腫龐大,怎么辦呢?

這時候各位大佬可能就直接想到了列式存儲,沒有錯,Lucene就引入了基于docId的列式存儲結構——DocValues

文檔號

列值

列值映射

0

2023-01-13

2

1

2023-01-12

1

2

2023-03-13

3

比如上表中的DocValues=[2023-01-13, 2023-01-12,2023-03-13]

如果列值是字符串,Lucene會把原來的字符串值按照字典排序生成數字ID,這樣的預處理能進一步加快排序速度。于是我們得到了DocValues=[2, 1, 3]

Docvalues的列式存儲形式可以加快我們的遍歷的速度。到這里一個常規的搜索取前N條記錄的請求算是真正的拆解完成。這里不討論詞頻、相關性打分、聚合等功能的分析,所以本文對整個過程和數據結構做了大幅簡化。如果對這部分感興趣,歡迎一起討論。

此時排序慢的問題也逐漸浮出了水面:盡管Docvalues又是列式存儲,又是將復雜值預處理為簡單值避免了查詢時的復雜比較,但是依舊架不住我們需要排序的數據集過大。

看起來ES盡力了,它好像確實不擅長解決我們這個場景的慢查詢問題。

不過有靈性的各位讀者肯定想到了,如果能把倒排表按照我們預先指定的順序存儲好,就能省下整個排序的時間。

2.2.2 IndexSorting

很快ES官方文檔《How to tune for search speed》中提到了一個搜索優化手段——索引排序(Index Sorting)出現在了我們的視野中。

從文檔上的描述我們可以知道,索引排序對于搜索性能的提升主要在兩個方面:

  1. 對于多條件并列查詢(a and b and ...),索引排序可以幫助我們把不符合條件的文檔存在一起,跳過大量的不匹配的文檔。但是此技巧僅適用于經常用于篩選的低基數字段。
  2. 提前中斷:當搜索排序和索引排序指定的順序一樣時,只需要比較每個段的前 N 個文檔,其他的文檔僅需要用于總數計算。比如:我們的文檔中有一個時間戳,而我們經常需要按照時間戳來搜索和排序,這時候如果指定的索引排序和搜索排序一致,通常能夠極大的提高搜索排序的效率。

提前中斷?。?!簡直是缺什么來什么,于是我們開始圍繞這一點展開調研。

(1)開啟索引排序
PUT /content
{
    "settings": {
        "index": {
            "sort.field": "publish_time", // 可指定多個字段
            "sort.order": "desc"
        }
    },
    "mappings": {
        "properties": {
            "content_id": {
                "type": "long"
            },
            "publish_time": {
                "type": "long"
            },
            ...
        }
    }
}

如上面的例子,文檔在寫入磁盤時會按照 publish_time 字段的遞減序進行排序。

在前面的段落中我們反復提到了docID和正排索引。這里我們順帶簡單介紹下他們的關系,首先Segment中的每個文檔,都會被分配一個docID,docID從0開始,順序分配。在沒有IndexSorting時,docID是按照文檔寫入的順序進行分配的,在設置了IndexSorting之后,docID的順序就與IndexSorting的順序一致。

下圖描述了docID和正排索引的關系:

圖片

那么再次回頭來看看我們最開始的查詢:

GET /content-alias/_search
{
  "track_total_hits":true,
  "sort": [
    {
      "publish_time": {
        "order": "desc"
      }
    }
  ],
  "size": 10
}

在Lucene中進行查詢時,發現結果集的倒排表順序剛好是publish_time降序排序的,所以查詢到前10條數據之后即可返回,這就做到了提前中斷,省下了排序開銷。那么代價是什么呢?

(2)代價

IndexSorting和查詢時排序不一樣,本質是在寫入時對數據進行預處理。所以排序字段只能在創建時指定且不可更改。并且由于寫入時要對數據進行排序,所以也會對寫入性能也會有一定負面影響。

之前我們提到了Lucene本身對排序也有各種優化,所以如果搜索結果集本身沒有那么多的數據,那么就算不開啟這個功能,也能有不錯的RT。

另外由于多數時候還是要計算總數,所以開啟索引排序之后只能提前中斷排序過程,還是要對結果集的總數進行count。如果能夠不查總數,或者說通過另外的方式獲取總數,那么能夠更好的利用這個特性。

小結:

  • 針對大結果集的排序取前N條的場景下,索引排序能顯著提高搜索性能。
  • 索引排序只能在創建索引時指定,不可更改。如果你有多個指定字段排序的場景,可能需要慎重選擇排序字段。
  • 不獲取總數能更好的利用索引排序。
  • 開啟索引排序會一定程度降低寫性能。這里貼一條ElaticsearchBenchmarks的數據截圖供大家參考。

圖片

見:Elasticsearch Benchmarks

2.3 效果

由于我們的業務遠遠沒有達到ES的寫入瓶頸,而且也少有頻繁變更排序字段的場景。在經過短暫的權衡之后,確定索引排序正是我們需要的,于是開始使用線上真實數據對索引排序的效果進行簡單的性能測試。

(1)性能測試:首頁

圖片

(2)性能測試:其他

這里開啟索引排序后,隨機幾個常規條件和時間窗口的搜索組合測試

圖片

可以看到效果非常明顯,沒有以前的那種尖刺,RT也很穩定,于是我們決定正式上線這個功能。

(3)線上效果

慢查詢

圖片

整體前后對比

圖片

和我們預期的基本一樣,搜索RT大幅降低,慢查詢完全消失。

2.4 后續優化

在探索過程中,其實還發現了一些其他的優化手段,鑒于開發成本和收益,有些我們并沒有完全應用于生產環境。這里列出其中幾點,希望能給大家一些啟發。

  • 不獲取總數: 大部分場景下,不查詢總數都能減少開銷,提高性能。ES 7.x之后的搜索接口默認不返回總數了,由此可見一斑。
  • 自定義routing規則: 從上文的查詢過程我們可以看到,ES會輪詢所有分片以獲取想要的數據,如果我們能控制數據的分片落點,那么也能節省不少開銷。比如說:如果我們將來如果有大量的場景都是查某個用戶的動態,那么可以控制按照用戶分片,這樣就避免了分片輪詢,也能提升搜索效率。
  • keyword: 不是所有的數字都應該按照數值字段來存,如果你的數字值很少用于范圍查詢,但是經常被用作term查詢,并且對搜索rt很敏感。那么keyword才是最適合的存儲方式。
  • 數據預處理:就像IndexSoting一樣,如果我們能夠在寫入時預處理好數據,也能節省搜索時的開銷。這一點配合_ingest/pipeline 也許能發揮意想不到的效果。

3、寫在最后

相信看到這里的大家都能看出,我們的優化中也沒有涉及到十分高深的技術難點,我們只是在解決問題的過程中,逐步從小白轉變成了一個初學者。來一個大牛也許從一開始就能直接繞過我們的彎路,不過萬里之行始于足下,最后這里總結一點經驗和感受分享給大家,希望能給與我們一樣的初學者一些參考。

ES在大結果集指定字段排序的場景下性能不佳,我們使用時應該盡量避免出現這種場景。如果無法避免,合適的IndexSorting設置能大幅提升排序性能。

優化永無止境,權衡好成本和收益,集中資源解決最優先和重要的問題才是我們應該做的。


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

2021-11-07 23:49:19

SQL數據庫工具

2023-03-13 18:35:33

灰度環境golang編排等

2024-11-20 19:56:36

2017-07-21 08:55:13

TomcatJVM容器

2023-03-30 18:39:36

2025-11-11 01:55:00

2025-06-05 09:06:08

2012-06-20 11:05:47

性能調優攻略

2025-07-31 00:00:25

2011-07-08 16:02:54

HBase

2021-03-04 08:39:21

SparkRDD調優

2024-11-21 08:00:00

向量搜索人工智能

2019-07-30 09:00:00

Snowflake數據庫性能調優

2023-10-09 18:35:37

得物Redis架構

2025-03-13 06:48:22

2023-01-13 18:32:40

計數系統設計

2011-03-10 14:40:54

LAMPMysql

2023-01-11 18:34:22

推薦精排模型

2011-05-20 15:02:01

Oracle性能調優

2011-11-14 10:28:23

點贊
收藏

51CTO技術棧公眾號

久久草.com| 欧美成人综合网站| 亚洲精品中文字幕乱码三区不卡| 一二三区免费视频| 色中色综合网| 7777精品久久久大香线蕉| 成人污网站在线观看| 日本久久一级片| 三级欧美韩日大片在线看| 中文字幕精品—区二区| 亚洲熟女乱综合一区二区| 美女露胸视频在线观看| 国产精品久久久久影视| 欧美巨大另类极品videosbest| 在线观看免费黄色片| www.亚洲欧美| 国产精品综合色区在线观看| 日韩在线视频二区| 亚洲色图14p| 欧美成人家庭影院| 香蕉乱码成人久久天堂爱免费| 久久99九九| 国产一区二区三区四区视频| 日韩视频一区| 日韩三级成人av网| 亚洲成人日韩在线| 99久热这里只有精品视频免费观看| 激情成人中文字幕| 色乱码一区二区三区熟女| 偷拍自拍在线| 国内精品久久久久影院薰衣草 | 野战少妇38p| 国产成人精品亚洲日本在线观看| 亚洲国产精品久久艾草纯爱 | gogo亚洲国模私拍人体| 欧美与亚洲与日本直播| 精品久久久久久亚洲国产300| 91xxx视频| 69av在线| 久久嫩草精品久久久精品一| 国产精品久久7| 国产亲伦免费视频播放| 免费视频最近日韩| 国产成人亚洲综合91精品| 日韩av一二三区| 欧美日韩国产在线一区| 久久影院在线观看| 蜜桃av免费观看| 精品久久一区| 伊人久久大香线蕉av一区二区| 人妻在线日韩免费视频| 久久久伦理片| 亚洲国语精品自产拍在线观看| 师生出轨h灌满了1v1| 精品国产亚洲一区二区在线观看| 欧美精品一卡两卡| 欧美一级片中文字幕| 欧美国产大片| 日本韩国一区二区| 久久久久久久片| xxxxx.日韩| 欧美日韩国产电影| 色综合五月婷婷| 欧美黄视频在线观看| 日韩一区二区免费在线观看| 交换做爰国语对白| 风间由美性色一区二区三区四区| 亚洲成年人影院在线| 亚洲午夜久久久久久久久| 成人av影音| 日韩风俗一区 二区| 久久亚洲AV成人无码国产野外| 中文字幕精品影院| 伊人久久久久久久久久| 亚洲精品一区二区三区在线播放| 久久久久亚洲| 久久久久久91| 日韩精品一区二区亚洲av| 日本不卡在线视频| 91日韩在线视频| 粉嫩av一区二区夜夜嗨| 91麻豆福利精品推荐| 午夜精品区一区二区三 | 欧美高清激情视频| 日本韩国欧美中文字幕| 久久国内精品自在自线400部| 成人一区二区电影| 色一情一乱一区二区三区| 久久精品一区蜜桃臀影院| 亚洲人成网站在线观看播放| 青春草视频在线| 亚洲a一区二区| 欧美性猛交xxx乱久交| 精品一区二区三区中文字幕 | 成人区人妻精品一区二| 国产成人一区二区三区影院| 粗暴蹂躏中文一区二区三区| 天堂网av手机版| 黄色精品一二区| 久久国产精品99久久久久久丝袜| caoporn国产精品免费视频| 一区二区三区精品久久久| 男人亚洲天堂网| 国产亚洲精aa在线看| 日韩精品免费看| 91人妻一区二区三区蜜臀| 国产精品久久久久9999高清| 成人中心免费视频| 日韩欧美在线番号| 一区二区日韩av| 中文字幕第36页| jizz国产精品| www.国产一区| 99re这里只有精品在线| 国产jizzjizz一区二区| 亚洲二区三区四区| 在线亚洲人成| 精品国产乱码久久久久久闺蜜 | 欧美一级淫片videoshd| av中文字幕免费在线观看| 久久久99精品久久| 97干在线视频| 精品一区二区三区四区五区| 中文字幕一区日韩电影| 国产又黄又猛又粗又爽| 国产精品一卡二卡| 手机福利在线视频| 粉嫩91精品久久久久久久99蜜桃 | 日本一卡二卡在线| 欧美一区激情| 成人免费自拍视频| 色综合久久久久综合一本到桃花网| 天天操天天综合网| 亚洲av无码一区东京热久久| 亚洲二区三区不卡| 国产欧美日韩高清| 风间由美一区| 在线国产电影不卡| 成人免费毛片糖心| 亚洲欧美春色| 九九九热999| 美女高潮视频在线看| 亚洲成人黄色在线| 久久久一二三区| 国产成人综合在线播放| 99re6这里有精品热视频| 国产精品视频一区视频二区| 日日狠狠久久偷偷四色综合免费| 一级一级黄色片| 国产日韩欧美电影| 亚洲视频在线观看一区二区三区| 亚州综合一区| 欧美性一区二区三区| 日韩porn| 色拍拍在线精品视频8848| asian性开放少妇pics| 午夜综合激情| 视频一区国产精品| 欧美综合影院| 超碰91人人草人人干| 亚洲第一精品网站| 亚洲成av人片在线观看无码| 丰满大乳奶做爰ⅹxx视频 | 亚洲2020天天堂在线观看| 少妇无码一区二区三区| 精品久久久久久久久久久久久| 日韩一级视频在线观看| 日韩av电影天堂| 在线看成人av电影| 中文字幕一区日韩精品| 91国偷自产一区二区三区的观看方式 | 最新国产乱人伦偷精品免费网站| 国产一区二区黄色| 欧美日韩美女| 久久精品国产91精品亚洲| 精品国产av鲁一鲁一区 | 大西瓜av在线| 网曝91综合精品门事件在线| 国产ts人妖一区二区三区 | 日韩毛片在线免费观看| 国产精品日日摸夜夜爽| 亚洲男女自偷自拍| 亚洲一区二区不卡视频| 一区二区三区高清在线观看| 秋霞av国产精品一区| 日本中文在线观看| 亚洲第一福利网站| 中文字幕视频二区| 亚洲一区二区高清| 成年人在线免费看片| 九九久久精品视频| 成人毛片一区二区| 欧美激情成人| 国产一区二区精品在线| 日韩av黄色| 午夜精品视频网站| 婷婷视频在线| 日韩电影中文字幕av| 亚洲熟女乱色一区二区三区久久久| 一区二区日韩av| 色综合99久久久无码国产精品| 国产精品亚洲人在线观看| 精品视频无码一区二区三区| 欧美二区不卡| 日韩免费毛片| 久久精品色综合| 国产日韩欧美日韩| 高清不卡av| 欧美激情videoshd| 国产粉嫩一区二区三区在线观看| 精品av综合导航| 99热在线只有精品| 欧美日韩一区二区三区免费看| av黄色在线看| 亚洲一区二区三区四区的| 中文字幕伦理片| 91免费版在线| 中国xxxx性xxxx产国| 精品一区二区三区免费观看| 女人另类性混交zo| 亚洲二区视频| 日韩成人手机在线| 小小影院久久| 亚洲国产精品久久久久久女王| 北条麻妃在线一区二区免费播放| 国产主播在线一区| 丰满少妇一区| 国产精品久久久久久久久影视| 色是在线视频| 国内精品久久久久久久久| www久久日com| 日韩在线观看免费| 日本美女在线中文版| 亚洲视频777| 免费一级在线观看| 日韩毛片中文字幕| 五月天婷婷视频| 欧美va亚洲va国产综合| 国产福利第一页| 欧美一级在线观看| 国产人妻精品一区二区三| 欧美精品久久久久久久多人混战| 欧美成人精品网站| 欧日韩精品视频| 国产精品无码一区| 欧美系列日韩一区| 在线观看中文字幕码| 欧美日韩专区在线| 中文字幕av久久爽| 欧美视频中文字幕| 亚洲一区二区色| 欧美日韩成人综合天天影院 | 亚洲精品一线二线三线| 亚洲精品一区二区三区不卡| 日韩欧美国产一区二区三区| 朝桐光av在线一区二区三区| 欧美videos中文字幕| 日本免费一区视频| 日韩经典中文字幕在线观看| 免费av在线电影| 国产一区二区三区丝袜| 天堂中文а√在线| 欧美裸体男粗大视频在线观看| 日本无删减在线| 91精品国产乱码久久久久久蜜臀| 亚洲淫成人影院| 国产精品九九九| 99综合99| 国产伦精品一区二区三区在线| 欧美a一欧美| 色狠狠久久av五月综合| 香蕉久久网站| 无码中文字幕色专区| 久久一区二区三区超碰国产精品| 亚洲精品视频导航| 国产精品综合在线视频| 呦呦视频在线观看| 日本一区二区免费在线观看视频| 国产人与禽zoz0性伦| 一区二区国产视频| 日韩在线视频不卡| 7777精品久久久大香线蕉| 欧美一级片免费| 亚洲系列中文字幕| 污污的网站在线看| 日韩美女主播视频| 免费观看亚洲天堂| 久久国产精品 国产精品| 国产精品videosex性欧美| www精品久久| 免费成人av在线| 影音先锋资源av| 国产欧美久久久精品影院| 国产极品国产极品| 日韩欧美中文免费| 99精品视频免费看| 亚洲日韩中文字幕| 大香伊人久久| 国产美女精品视频免费观看| 电影一区二区在线观看| 亚洲精品二区| 99国产一区| 日韩欧美理论片| 国产网站一区二区三区| 国产在线视频卡一卡二| 欧美日韩中文国产| 水莓100在线视频| 久久伊人免费视频| 国产成人免费| 蜜桃久久精品乱码一区二区| 欧美jjzz| 欧美日韩一区二区三区69堂| 92精品国产成人观看免费| 欧美成人精品欧美一级| 欧美日韩一区三区四区| 日本一二三区在线视频| 欧美激情中文字幕在线| 欧美91在线|欧美| 欧美理论一区二区| 黄色亚洲精品| 性欧美在线视频| 国产欧美日韩久久| 久久久精品福利| 精品成人一区二区| 欧美6一10sex性hd| 亚洲一区二区三区xxx视频| 国产一区二区在线| 成年网站在线免费观看| av网站免费线看精品| 国产一级生活片| 欧美一级在线观看| av大大超碰在线| 国产自产女人91一区在线观看| 国产日产一区| 国产a视频免费观看| 久久亚洲二区三区| 中文字幕亚洲精品在线| 亚洲国产91精品在线观看| 精灵使的剑舞无删减版在线观看| 91视频免费在线| 97视频精品| 国产一区二区在线观看免费视频| 欧美国产成人精品| 久久久久久av无码免费看大片| 亚洲欧美综合另类中字| 性欧美又大又长又硬| 精品网站在线看| 日韩视频一区| 成年人在线观看av| 色综合天天视频在线观看| 欧美女v视频| 国产精品久久久久久久久免费| 欧洲视频一区| 男人女人黄一级| 亚洲欧洲在线观看av| 国产一区二区三区三州| 欧美福利小视频| 国产精品色在线网站| 日本福利视频在线| 国产亚洲美州欧州综合国| 中文字幕在线观看视频一区| 色播久久人人爽人人爽人人片视av| 日韩三级成人| 成人在线视频一区二区三区| 成人性视频网站| 男女啊啊啊视频| 国产一区二区三区视频免费| 欧美成a人片免费观看久久五月天| 日韩欧美亚洲区| 激情综合一区二区三区| 久久影院一区二区| 亚洲精品一区二三区不卡| 成人亚洲视频| 成人手机在线播放| 99精品一区二区三区| 中文字幕 国产精品| 久久亚洲精品一区二区| 动漫3d精品一区二区三区乱码| 日本wwww视频| 中文字幕亚洲一区二区av在线| 精品人妻无码一区二区| 欧美有码在线观看视频| 天天色天天射综合网| 欲求不满的岳中文字幕| 欧美伊人久久大香线蕉综合69| av毛片在线免费看| 精品欧美一区二区三区久久久 | 亚洲 国产 欧美 日韩| 国产精品69av| 欧美三区不卡| 亚洲天堂久久新| 91精品福利在线一区二区三区 | 日本人妖在线| 成人欧美在线视频| 亚洲永久在线| 中文字幕电影av| 亚洲免费福利视频| 精品国产伦一区二区三区观看说明 | 精品一区二区视频在线观看| 欧美日韩成人综合天天影院 |