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

哎,Elasticsearch怎么這么多漏洞

安全 漏洞
Elasticsearch版本有7.x升級到8.x時,不僅僅是客戶端的變更,運行環境也有較大的改變,Spring版本也做了大版本升級。最后在項目里僅僅是修改了客戶端用來匹配與es服務交互時,保證請求響應的過程沒有問題。

elasticsearch 8

之前使用的一個老系統使用了elasticsearch7.x版本,之后又反應es版本存在各種漏洞。

圖片圖片

無奈只能做版本升級來解決問題,計劃是將版本升級到8.x,在網上了解了下兩個版本的區別,主要包括以下變化:

  1. Rest API相比較7.x而言做了比較大的改動(比如徹底刪除_type),為了降低用戶的升級成本,8.x會暫時的兼容7.x的請求。
  2. 默認開啟安全配置(三層安全),并極大簡化了開啟安全需要的工作量,可以這么說:7.x開啟安全需要10步復雜的步驟比如CA、證書簽發、yml添加多個配置等等,8.x只需要一步即可)。
  3. 存儲空間優化:更新了倒排索引,對倒排文件使用新的編碼集,對于keyword、match_only_text、text類型字段有效,有3.5%的空間優化提升,對于新建索引和segment自動生效。
  4. 優化geo_point,geo_shape類型的索引(寫入)效率:15%的提升。
  5. 新特性:支持上傳pyTorch模型,在ingest的時候使用。比如在寫入電影評論的時候,如果我們想要知道這個評論的感情正負得分,可以使用對應的AI感情模型對評論進行運算,將結果一并保存在ES中。
  6. 技術預覽版KNN API發布,(K鄰近算法),跟推薦系統、自然語言排名相關。之前的KNN是精確搜索,在大數據集合的情況會比較慢,新的KNN提供近似KNN搜索,以提高速度。
  7. 對ES內置索引的保護加強了:elastic用戶默認只能讀,如果需要寫權限的時候,需有allow_restrict_access權限。

那么在基于spring-boot的開發時,我們大概需要做些對應的調整了,要包括以下幾點:

  • spring-data-elasticsearch版本升級
  • 客戶端依賴由elasticsearch-rest-high-level-client調整為elasticsearch-java
  • JDK版本升級到17

借著這個機會,重溫下es相關的知識……

創建索引

  • 基于Elasticsearch Rest API

PUT localhost:9200/index_novel

{
  "settings": {
    "index": {
      "number_of_shards": 1,
      "number_of_replicas": 1
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "keyword": { "ignore_above": 256, "type": "keyword" }
        }
      },
      "author": { "type": "keyword" },
      "category": { "type": "keyword"  },
      "type": { "type": "keyword"  },
      "description": { "analyzer": "ik_max_word", "type": "text" },
      "content": { "analyzer": "ik_max_word", "type": "text" },
      "coverUrl": { "type": "text" },
      "insertTime": { "format": "date_time", "type": "date" },
      "updateTime": { "format": "date_time", "type": "date" },
      "status": { "type": "keyword" }
    }
  }
}
  • 基于SpringBoot創建
  1. 定義Novel實體
@Data
@Document(indexName = "index_novel")
public class Novel {

}
  1. 定義Repository
public interface NovelDao extends ElasticsearchDao<Novel, String> {  }
  1. 啟用Elasticsearch Repositories支持
@EnableElasticsearchRepositories
  1. 主要實現在SimpleElasticsearchRepository中:
public SimpleElasticsearchRepository(ElasticsearchEntityInformation<T, ID> metadata,
        ElasticsearchOperations operations) {
    this.operations = operations;

    Assert.notNull(metadata, "ElasticsearchEntityInformation must not be null!");

    this.entityInformation = metadata;
    this.entityClass = this.entityInformation.getJavaType();
    this.indexOperations = operations.indexOps(this.entityClass);

    if (shouldCreateIndexAndMapping() && !indexOperations.exists()) {
        indexOperations.createWithMapping();
    }
}

字段類型

Elasticsearch 支持多種字段類型,每種類型都有其獨特的作用和功能。其中常見的字段類型包括:

  • Text:用于存儲文本內容,支持全文搜索、模糊搜索、正則表達式搜索等功能。
  • Keyword:用于存儲關鍵詞,支持精確匹配和聚合操作。
  • Date:用于存儲日期時間類型的數據,支持日期范圍查詢、日期格式化等功能。
  • Numeric:用于存儲數值類型的數據,支持數值范圍查詢、聚合操作等功能。
  • Boolean:用于存儲布爾類型的數據,支持精確匹配和聚合操作。
  • Geo-point:用于存儲地理位置信息,支持距離計算、地理位置聚合等功能。
  • Object:用于存儲復雜的結構化數據,支持嵌套查詢、嵌套聚合等功能。

text

Es中的text類型是一種用于處理長文本的數據類型,適合于全文搜索和分析。當將文本字段映射為text類型時,文本會被分析器分詞處理成一個個單詞, 然后被存儲在倒排索引中,以便后續進行全文搜索。text類型支持多種分析器和過濾器,可以對不同的文本進行不同的分詞處理,以達到最佳的搜索效果。此外, text類型還支持詞項位置信息和偏移量信息的存儲,以便進行精確的搜索和高亮顯示。

keyword

ES把keyword類型的值作為一整體存在倒排索引中,不進行分詞。 keyword適合存結構化數據,如性別、手機號、數據狀態、標簽HttpCode(404,200,500)等。 字段常用來精確查詢、過濾、排序、聚合時,應設為keyword,而不是數值型。 如果某個字段你經常用來做range查詢, 你還是設置為數值型(integer,long),ES對數字的range有優化。 還可以把字段設為multi-field,這樣又有keyword類型又有數值類型,方便多種方式的使用。 最長支持32766個UTF-8類型的字符,但放入倒排索引時,只截取前一段字符串,長度由ignore_above參數決定,默認"ignore_above" : 256。

Auto

在spring中,支持一種auto的數據類型,通過在字段上添加注解實現@Field(type = FieldType.Auto),Auto申明的類型除了生成一個text類型字段外,還會多一個.keyword的keyword類型的字段。

@Field(type = FieldType.Auto)
    private String title;

上面對應的mapping:

{
  "title": {
    "type": "text",
    "fields": {
      "keyword": {
        "ignore_above": 256,
        "type": "keyword"
      }
    }
  }
}

fields可以讓同一文本有多種不同的索引方式,比如上面text類型的字段title,可以使用text類型做全文檢索,使用keyword類型做聚合和排序。

通過這種方式,可以實現一個字段運用于不同的場景。要知道字段類型的使用場景是受限的。在mapping中通過添加fields的擴展字段, 讓一個字段擁有多個子字段類型,使得一個字段能夠被多個不同的索引方式進行索引。

查詢

以下是 Elasticsearch 中所有的查詢類型:

Match Query:用于匹配文本類型字段中的文本。
Multi-match Query:用于在多個字段中匹配文本類型字段中的文本。
Term Query:用于匹配非文本類型字段(如數字、布爾值等)中的確切值。
Terms Query:用于匹配非文本類型字段(如數字、布爾值等)中的多個確切值。
Range Query:用于匹配數字、日期等范圍內的值。
Exists Query:用于匹配指定字段是否存在值。
Prefix Query:用于匹配以指定前綴開頭的文本。
Wildcard Query:用于匹配包含通配符的文本。
Regexp Query:用于使用正則表達式匹配文本。
Fuzzy Query:用于匹配類似但不完全匹配的文本。
Type Query:用于匹配指定類型的文檔。
Ids Query:用于根據指定的文檔 ID 匹配文檔。
Bool Query:用于組合多個查詢條件,支持AND、OR、NOT等邏輯操作。
Boosting Query:用于根據指定的查詢條件調整文檔的權重。
Constant Score Query:用于為所有匹配的文檔分配相同的分數。
Function Score Query:用于根據指定的函數為匹配的文檔分配自定義分數。
Dis Max Query:用于在多個查詢條件中選擇最佳匹配的文檔。
More Like This Query:用于根據文檔內容查找相似的文檔。
Nested Query:用于在嵌套對象中查詢。
Geo Distance Query:用于查詢地理坐標范圍內的地點。
Span Term Query:用于匹配指定的單個術語。
Span Multi Term Query:用于匹配指定的多個術語。
Span First Query:用于匹配文檔中的首個匹配項。
Span Near Query:用于匹配多個術語之間的近似距離。
Span Or Query:用于匹配任何指定的術語。
Span Not Query:用于匹配不包含指定術語的文檔。
Script Query:用于根據指定的腳本匹配文檔。

下面看下一些常用的簡單查詢,后面的復合查詢以及聚合查詢都是基于這些簡單查詢來組合嵌套來實現。

URL : POST localhost:9200/index_novel/_search

match

根據關鍵字對某個字段進行檢索,當然傳入的參數會先進行分詞,然后進行匹配

{
  "_source": ["title","author","type","category","description","status","updateTime"],
  "query": {
    "match": {
      "title": {
        "query": "天下",
        "minimum_should_match": "30%"
      }
    }
  }
}

match_phrase

詞項匹配(查詢分詞的詞項必須完全匹配到索引分詞的詞項中,并且詞項的相對位置position必須一致),分詞后的相對位置也必須要精準匹配(slop)

{
  "_source": ["title","author","type","category","description","status","updateTime"],
  "query": {
    "match_phrase": {
      "title" : {"query": "天下", "slop": "1"}
    }
  }
}

term

根據詞條完全匹配,也就是精確查詢,搜索前不會對搜索詞進行分詞解析,直接對搜索詞進行查找;

{
  "_source": ["title","author","type","category","description","status","updateTime"],
  "query": {
    "term": { "author": "淚冠哀歌" }
  }
}

復合查詢

bool

query和filter兩種不同的Context

  • query context:相關性算分
  • filter context:不需要算分 ( yes or no ),可以緩存cache,性能更高

bool一共支持4中查詢,每一種子查詢都可以嵌套多個簡單查詢

  • must 必須匹配某些條件才可以返回,計算分值
  • must_not 必須不匹配某些條件,不計算分值
  • should 當滿足此條件時,計算分值
  • filter 必須匹配,不會計算分值
{
    "query":{
        "bool":{
            "filter":{
                "term":{ "title":"遮天" }
            },
            "should":[
                {
                    "match": { "title":"遮天" }
                }
            ],
            "must":[
                {
                    "match":{ "title":"遮天" }
                }
            ]
        }
    }
}

constant_score

查詢返回的相似度分與字段上指定boost參數值相同的數據。

{
  "_source": ["title","author","type","category","description","status","updateTime"],
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "description": "天下"
        }
      },
      "boost": 1
    }
  }
}

dis_max

最大析取(disjunction max) 返回的文檔必須要滿足多個查詢子句中的一項條件; 若一個文檔能匹配多個查詢子句時,則dis_max查詢將為能匹配上查詢子句條件的項增加額外分,即針對多個子句文檔有一項滿足就針對滿足的那一項分配更高分, 這也能打破在多個文檔都匹配某一個或多個條件時分數相同的情況;

{
  "_source": ["title","author","type","category","description","status","updateTime"],
  "query": {
    "dis_max": {
      "tie_breaker": 0.7,
      "queries": [
        {
          "term": {
            "description": "天下"
          }
        }
      ]
    }
  }
}

聚合查詢

聚合(aggregations)可以讓我們極其方便的實現對數據的統計、分析、運算。例如:

語法:

{
  "aggs": {
    "自定義聚合名稱": {
      "聚合類型": {
          "聚合參數": "參數值"
        }
    }
  }
}
  • 聚合類型

Terms(詞條聚合):按照字段值進行分組,統計每個分組的文檔數量。

Sum(求和聚合):計算指定字段的總和。

Avg(平均值聚合):計算指定字段的平均值。

Min(最小值聚合):找出指定字段的最小值。

Max(最大值聚合):找出指定字段的最大值。

Stats(統計聚合):計算指定字段的統計信息,包括最小值、最大值、總和、平均值和文檔數量。

Extended Stats(擴展統計聚合):計算指定字段的擴展統計信息,包括最小值、最大值、總和、平均值、標準差和文檔數量。

Cardinality(基數聚合):計算指定字段的唯一值數量。

Date Histogram(日期直方圖聚合):按照時間間隔對日期字段進行分組。

Range(范圍聚合):將文檔按照指定范圍進行分組,例如按照價格范圍、年齡范圍等。

Nested(嵌套聚合):在嵌套字段上執行子聚合操作。

  • 聚合參數
  •     field(字段):指定要聚合的字段。
  •     size(大?。合拗品祷氐木酆贤暗臄盗俊?/li>
  •     script(腳本):使用腳本定義聚合邏輯。
  •     min_doc_count(最小文檔數量):指定聚合桶中文檔的最小數量要求。
  •     order(排序):按照指定字段對聚合桶進行排序。
  •     include/exclude(包含/排除):根據指定的條件包含或排除聚合桶。
  •     format(格式):對聚合結果進行格式化。
  •     precision_threshold(精度閾值):用于基數聚合的精度控制。
  •     interval(間隔):用于日期直方圖聚合的時間間隔設置。
  •     range(范圍):用于范圍聚合的范圍定義。

分頁

  • from-size

查詢優點

  1. 支持隨機翻頁
  • 查詢缺點
  1. 受制于 max_result_window 設置,不能無限制翻頁。
  2. 存在深度翻頁問題,越往后翻頁越慢。
  • From + size 查詢適用場景
  1. 第一:非常適合小型數據集或者大數據集返回 Top N(N <= 10000)結果集的業務場景。
  2. 第二:類似主流 PC 搜索引擎(谷歌、bing、百度、360、sogou等)支持隨機跳轉分頁的業務場景。
  • search_after
  • search_after 優點
  1. 不嚴格受制于 max_result_window,可以無限制往后翻頁。 ps:不嚴格含義:單次請求值不能超過 max_result_window;但總翻頁結果集可以超過。
  • search_after 缺點
  1. 只支持向后翻頁,不支持隨機翻頁。
  • search_after 適用場景
  1. 類似:今日頭條分頁搜索  https://m.toutiao.com/search 不支持隨機翻頁,更適合手機端應用的場景。
  • scroll

scroll 查詢優點

  1. 支持全量遍歷。 ps:單次遍歷的 size 值也不能超過 max_result_window 大小。
  • scroll 查詢缺點
  1. 響應時間非實時。
  2. 保留上下文需要足夠的堆內存空間。
  • scroll 查詢適用場景
  1. 全量或數據量很大時遍歷結果數據,而非分頁查詢。
  2. 官方文檔強調:不再建議使用scroll API進行深度分頁。如果要分頁檢索超過 Top 10,000+ 結果時,推薦使用:PIT + search_after。

排序

和關系型數據庫一樣,對關鍵屬性進行升序或降序返回數據。但是要注意,字段不能是text類型

{
  "sort": { 
    "insertTime": { "order": "desc" }
  }
}

高亮

我們可能有這樣的需求,在檢索結果中,將檢索關鍵詞進行高亮展示,就像百度搜索的結果,標題和描述中都標記為紅色了,elasticsearch同樣支持這樣的查詢, 返回的高亮內容主要是通過`'元素包裹,當然可以通過配置修改。需要注意的是,設置的高亮字段需要和檢索字段匹配。

{
  "highlight": {
    "pre_tags": [
      "<span color='red'>"
    ],
    "post_tags": [
      "</span>"
    ],
    "fields": {
      "description": {
        "fragment_size": 100, 
        "number_of_fragments": 5
      }
    }
  }
}

集成

Elasticsearch與SpringBoot的集成非常簡單:

  1. 引入依賴
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
  1. 編寫文檔對應實體,申明索引信息通過@org.springframework.data.elasticsearch.annotations.Document注解可以定定義索引信息,比如是否在系統啟動后自動創建通過@org.springframework.data.elasticsearch.annotations.Field定義各個字段類型等信息
@Data
@Document(indexName = "index_novel")
public class Novel {
  // 省略 ...
  @Field(type = FieldType.Auto)
  private String title;

  @Field(type = FieldType.Keyword)
  private String author;

  @Field(type = FieldType.Keyword)
  private String type;

  @Field(type = FieldType.Text, analyzer = "ik_max_word")
  private String description;

  @Field(type = FieldType.Text, analyzer = "ik_max_word")
  private String content;
  // 省略...
}
  1. 定義DAO抽象接口與代理實現通過自定義接口方便擴展,當ElasticsearchRepository中提供的方法無法支持時,可以根據業務需求自定義查詢方式在BaseElasticsearchRepository中,可以基于ElasticsearchOperations自定義各種復雜查詢
public interface ElasticsearchDao<T, ID> extends ElasticsearchRepository<T, ID>{
    
}
public class BaseElasticsearchRepository<T,ID> extends SimpleElasticsearchRepository<T,ID> implements ElasticsearchDao<T,ID>{
  private ElasticsearchEntityInformation entityInformation;
  private ElasticsearchOperations elasticsearchOperations;

  public BaseElasticsearchRepository(ElasticsearchEntityInformation metadata, ElasticsearchOperations operations) {
    super(metadata, operations);
    this.entityInformation = metadata;
    this.elasticsearchOperations = operations;
  }
}
public interface NovelDao extends ElasticsearchDao<Novel, String> {

}
  1. 啟用Repository并配置DAO的通用實現
@SpringBootApplication
@EnableElasticsearchRepositories(basePackages = "com.sucl.springbootelasticsearch8.dao", repositoryBaseClass = BaseElasticsearchRepository.class)
public class SpringbootElasticsearch8Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootElasticsearch8Application.class, args);
    }

}
  1. 在Service層的使用
@Service
public class NovelService {

  private NovelDao novelDao;

  public NovelService(NovelDao novelDao) {
    this.novelDao = novelDao;
  }
}

基于SpringBoot對Elasticsearch的繼承整體比較簡單,由于ES的查詢種類非常多,在Spring中提供了與DSL QUERY對應的API可以使用,只不過沒法通過通用的SimpleElasticsearchRepository中實現。

示例

現在基于ES8做了一個簡單的示例,主要包括以下功能:

  1. 從起點小說網按類型加載小說到es
  2. 基于spring-boot-starter-data-elasticsearch實現小說句的檢索
  • 起點小說數據加載到elasticsearch,主要實現方式是通過工具jsoup解析小說網站的,并按文檔結構組裝文檔數據,并調用es API將數據存儲到es中,大概有以下幾個過程
  1. 訪問起點小說網https://www.qidian.com/free/all/,根據傳入的分類與頁碼參數按頁獲取頁面html
  2. 解析上一步html,分別獲取每個小說目錄html片段,解析成一部小說文檔數據
  3. 按目錄分別加載每個章節頁面html,按章節分別加載章節小說內容,最后將所有內容拼接到小說文檔數據中
  4. 調用API將小說數據存儲到elasticsearch
  5. 篇幅有限,具體實現可以參考下面的github
  • 小說查詢相關DAO可以參考上面的集成
  • 添加service與controller
@Service
public class NovelService {

  private NovelDao novelDao;

  public NovelService(NovelDao novelDao) {
    this.novelDao = novelDao;
  }

  /**
   * 批量保存
   * @param novels
   * @return
   */
  public List<Novel> saveNovels(List<Novel> novels) {
    List<Novel> savedNovels = new ArrayList<>();
    novels.forEach(this::configureNovel);
    novelDao.saveAll(novels).forEach(savedNovels::add);
    return savedNovels;
  }

  /**
   * 根據關鍵字在指定字段值檢索
   * @param keyword
   * @param fields
   * @return
   */
  public List<Novel> searchNovels(String keyword, String[] fields) {
    DslQuery dslQuery = DslQuery.of(DslQuery.Type.MULTI_MATCH, String.join(",",fields), keyword);
    return novelDao.commonQuery(dslQuery, null);
  }
  
  /**
   * 根據主鍵查詢單條數據,按指定字段查找相似數據
   * @param novel
   * @param fields
   * @param pageable
   * @return
   */
  public Page<Novel> getPageSimilarNovel(Novel novel, String[] fields, Pager pager) {
    return novelDao.searchSimilar(novel, fields, PageRequest.of(pager.getPageIndex(), pager.getPageSize()));
  }
  
}

示例內容涉及到Elasticsearch DSL QUERY組裝過程以及上面說到的SimpleElasticsearchRepository不足以支撐業務查詢時的一些擴展方法。 示例使用了起點小說網站加載小說數據,其他網站實現思路一樣。由于篇幅原因,具體代碼實現可以參考:

https://github.com/sucls/springboot-elasticsearch-8

結束語

Elasticsearch版本有7.x升級到8.x時,不僅僅是客戶端的變更,運行環境也有較大的改變,Spring版本也做了大版本升級。最后在項目里僅僅是修改了客戶端用來匹配與es服務交互時,保證請求響應的過程沒有問題。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2024-07-12 09:35:38

前端工具檢驗

2018-02-01 07:16:08

布線電線線路

2017-08-11 14:21:33

軟件開發前端框架

2024-04-02 08:41:10

ArrayListSubList場景

2021-08-31 09:35:01

TCPIP漏洞

2018-06-26 15:00:24

Docker安全風險

2024-02-20 08:09:51

Java 8DateUtilsDate工具類

2023-11-13 08:49:54

2021-01-29 08:52:10

App微信移動應用

2022-07-26 23:43:29

編程語言開發Java

2017-12-21 19:38:50

潤乾中間表

2021-01-14 05:08:44

編譯鏈接

2013-01-15 09:41:45

編程語言

2019-01-31 10:15:14

群聊單聊消息

2019-02-28 10:37:19

開源數據庫Oracle

2021-01-14 10:24:55

壓縮集合方式

2020-08-31 06:43:13

Redis集群模式

2022-11-09 10:32:50

群業務群聊數據結構

2020-11-20 10:22:34

代碼規范設計

2021-05-11 07:42:59

BeanSpring屬性
點贊
收藏

51CTO技術棧公眾號

六月婷婷久久| 中文在线不卡视频| 人妻av中文系列| 青青草超碰在线| 美女任你摸久久| 欧美噜噜久久久xxx| av鲁丝一区鲁丝二区鲁丝三区| 中文不卡1区2区3区| 国产精品每日更新| 国产91免费视频| 日韩在线 中文字幕| 亚洲成av人片一区二区密柚| 亚洲国产欧美久久| 五月婷婷六月合| www视频在线观看| 欧美高清一级片在线观看| αv一区二区三区| 日日夜夜狠狠操| 国产主播一区| 日韩在线小视频| a视频免费观看| 激情综合五月| 在线亚洲+欧美+日本专区| 97在线免费视频观看| 9色在线视频网站| www.日韩大片| caoporen国产精品| 亚洲熟妇无码久久精品| 性欧美xxxx大乳国产app| 久久电影一区二区| 色屁屁草草影院ccyy.com| 国产精品任我爽爆在线播放| 欧美一区二区三区四区视频| 国产自偷自偷免费一区 | 成人小视频在线观看| 国产精品成av人在线视午夜片| 中文在线观看免费网站| 久久精品影视| 日韩在线观看高清| 欧洲女同同性吃奶| 老司机成人在线| 日韩欧美亚洲国产精品字幕久久久 | 久久久久久青草| 成人avav影音| 国产精品xxxx| 亚洲AV无码精品色毛片浪潮| 国产在线播放一区| 国产综合福利在线| 亚洲在线精品视频| 青草av.久久免费一区| 日韩暖暖在线视频| 精品人妻无码一区二区性色| 在线免费高清一区二区三区| 久久久久久久国产| 麻豆成人在线视频| 国产字幕视频一区二区| 欧美高清视频免费观看| 久久亚洲精品大全| 亚洲午夜电影| 国内精品免费午夜毛片| 日韩精品在线不卡| 亚洲欧美日韩国产综合精品二区| 欧美在线亚洲一区| 亚洲天堂男人av| 天堂av在线一区| 国产精品露脸自拍| 一二三四区在线| 精品一区二区三区在线观看| 成人激情电影一区二区| 国产美女自慰在线观看| 国产精品亚洲成人| 国产精品一区二区a| 人妻一区二区三区四区| 99热精品国产| 日本一区二区高清视频| av中文字幕在线| 亚洲免费观看高清完整版在线观看 | 国产成人精品网站| 中国女人一级一次看片| 久久精品国产久精国产| 成人免费在线看片| 欧美偷拍视频| 国产精品久久午夜| 无颜之月在线看| 无遮挡爽大片在线观看视频| 91国在线观看| 加勒比av中文字幕| 国产香蕉精品| 在线观看亚洲区| 久久久精品视频免费观看| 国产欧美丝祙| 成人国产在线激情| 乱精品一区字幕二区| 久久久精品影视| 在线观看av的网址| 成年美女黄网站色大片不卡| 欧美精品久久久久久久久老牛影院| 苍井空张开腿实干12次| 四虎5151久久欧美毛片| www亚洲欧美| 天天插天天操天天干| 久久国产欧美日韩精品| 精品欧美国产| 老司机99精品99| 欧美性色xo影院| 男女污污视频网站| 亚洲专区视频| 欧美成人精品在线视频| 91午夜精品亚洲一区二区三区| 激情五月婷婷综合网| 精品亚洲第一| 羞羞视频在线免费国产| 欧洲视频一区二区| 玖玖爱在线精品视频| 国产精品二区不卡| 7777免费精品视频| jizz中国少妇| 亚洲国产电影在线观看| 天天夜碰日日摸日日澡性色av| 成人在线免费电影网站| 日韩精品中文字幕有码专区| 综合五月激情网| 美女mm1313爽爽久久久蜜臀| 免费在线一区二区| 爱情岛亚洲播放路线| 欧美区在线观看| 国产精品一二三区在线观看| 亚洲国产1区| 成人免费淫片视频软件| 岛国视频免费在线观看| 性做久久久久久久久| 无套白嫩进入乌克兰美女| 成人区精品一区二区婷婷| 欧美亚洲成人免费| 日韩一级在线播放| 一区二区三区久久久| 欧美日韩理论片| 久久神马影院| 国产精品视频最多的网站| 理论在线观看| 91国产精品成人| 强伦人妻一区二区三区| 亚洲欧美卡通另类91av| 玛丽玛丽电影原版免费观看1977| 岛国片av在线| 亚洲成人xxx| 日本一级淫片免费放| 国产91露脸合集magnet| 亚洲熟妇无码av在线播放| 国产一区二区高清在线| 欧美精品一二区| www香蕉视频| 亚洲精品亚洲人成人网| 亚洲欧美激情一区二区三区| 欧美激情综合色综合啪啪| 91亚洲精品一区二区| 成人video亚洲精品| 91麻豆精品国产91久久久久| 欧美一区二区三区爽爽爽| 国产美女主播视频一区| 欧美在线观看黄| 国产伦精品一区二区三区在线播放 | 欧美三级韩国三级日本一级| 国产一区二区三区四区在线| 免费观看在线色综合| 中文字幕日韩精品一区二区| 国产中文欧美日韩在线| 欧美激情综合亚洲一二区| 少妇精品视频一区二区| 色婷婷久久久亚洲一区二区三区| 亚洲精品成人无码| 麻豆精品久久久| 肉大捧一出免费观看网站在线播放| 91精品久久久久久综合五月天| 国产69精品久久久久9| 亚洲欧美日韩免费| 在线精品视频免费播放| 99自拍视频在线| 高清免费成人av| 1024精品视频| 999久久久亚洲| 丁香五月网久久综合| 玛雅亚洲电影| 久久网福利资源网站| 亚洲精品久久久久久动漫器材一区| 婷婷亚洲久悠悠色悠在线播放| 亚洲自拍偷拍一区二区| 久久se精品一区二区| 性一交一乱一伧国产女士spa| 亚洲电影男人天堂| 91精品视频观看| 精品极品在线| 日韩午夜在线视频| 婷婷视频在线观看| 欧美人妖巨大在线| 日韩精品视频播放| 成人免费视频在线观看| 男人的天堂影院| 日本人妖一区二区| 91网站在线观看免费| 欧美女王vk| 成人看片在线| av激情成人网| 久久久这里只有精品视频| 成人福利在线| 亚洲国内精品在线| 国产美女免费视频| 色激情天天射综合网| 欧美激情国产精品免费| 欧美国产成人精品| 国产又粗又猛又色| 国产精品一区二区免费不卡| 日本www高清视频| 国产综合视频| 中日韩在线视频| 免费看av成人| 国产精品一区视频| а天堂中文最新一区二区三区| 日本精品视频在线观看| av资源中文在线| 欧美成人午夜激情| 日本激情视频在线观看| 亚洲视频免费一区| 日韩二区三区| 亚洲国产欧美精品| 亚洲黄色精品视频| 91麻豆精品国产自产在线| 69视频免费看| 亚洲一区二区三区美女| 欧美成人777| 中文字幕一区二区三| 丰满的亚洲女人毛茸茸| 久久综合成人精品亚洲另类欧美 | 久久久精品免费视频| 成年人在线观看视频| 日韩精品亚洲视频| 日本毛片在线观看| 精品成人一区二区三区四区| 国产成人a人亚洲精品无码| 欧美日韩电影一区| 中文字幕在线观看高清| 欧美主播一区二区三区| 精品久久久久久久久久久国产字幕| 欧美日韩国产在线看| 日本三级午夜理伦三级三| 亚洲午夜久久久久久久久久久| 一区视频免费观看| 亚洲人成伊人成综合网小说| 小早川怜子一区二区的演员表| 国产精品伦理在线| 天堂网av2018| 国产精品久久久久久久久果冻传媒 | 成人av地址| 精品国产一区二区三区久久久久久| 91在线一区| 国产伦理一区二区三区| 日韩成人午夜| 欧美精品与人动性物交免费看| 国产精品一线天粉嫩av| 午夜精品福利一区二区| 日韩黄色大片| 香蕉视频免费版| 亚洲一本视频| 青青在线视频观看| 日本成人中文字幕| 欧美视频亚洲图片| 床上的激情91.| 亚洲狠狠婷婷综合久久久久图片| 久久夜色精品国产欧美乱极品| 久久精品国产亚洲AV熟女| 国产蜜臀97一区二区三区| 秋霞网一区二区三区| 国产精品不卡视频| 欧美日韩国产精品综合| 精品久久久久久亚洲国产300 | 亚洲欧美成人影院| 欧美极品美女电影一区| 岛国av在线网站| 国产va免费精品高清在线观看| 成人午夜在线| 96精品久久久久中文字幕| 欧美成人专区| 亚洲欧洲一区二区福利| 国精品一区二区三区| 成人免费观看毛片| 老司机精品视频导航| 性色av浪潮av| 91亚洲精华国产精华精华液| 三级黄色片在线观看| 一区二区免费视频| 波多野结衣一区二区三区在线| 666欧美在线视频| 天堂在线观看视频| www.99久久热国产日韩欧美.com| 草美女在线观看| 国产精品免费一区豆花| 综合欧美亚洲| 在线免费一区| 国产亚洲毛片| 激情成人在线观看| 欧美国产日韩精品免费观看| 久久久久久久久艹| 欧美色手机在线观看| 日韩一级在线播放| 操91在线视频| 日韩精品免费观看视频| 国产精品美女黄网| 久久国产精品成人免费观看的软件| 欧美成人精品免费| 精一区二区三区| b站大片免费直播| 亚洲高清免费观看| 国产一区二区三区视频免费观看| 日韩精品在线免费观看| 91极品在线| 国产精品一二三视频| 亚洲精品推荐| 日韩视频在线视频| 国产在线观看免费一区| 五月天精品在线| 欧美小视频在线观看| 亚洲第一页在线观看| 最新的欧美黄色| 亚洲成人激情社区| 国产综合av一区二区三区| 亚洲国产精品久久久天堂| 亚洲 欧美 日韩系列| 久久久综合激的五月天| 国产精品 欧美 日韩| 日韩欧美成人一区| 久做在线视频免费观看| 国产精品自拍网| 激情婷婷综合| 久久久久免费精品| 久久久久久亚洲综合| 日本一区二区三区精品| 精品sm在线观看| 欧美xxxx免费虐| 99在线观看视频| 中文字幕一区二区av| 手机版av在线| 中文字幕日本不卡| 一级特黄aaa| 色婷婷综合成人av| 国产三级一区| 亚洲午夜在线观看| 久久电影网电视剧免费观看| 免费成人深夜天涯网站| 91久久精品日日躁夜夜躁欧美| 黄色av网站在线| 国产精品成人免费视频| 日本女优一区| 日本人69视频| 亚洲女子a中天字幕| 国产肥老妇视频| 欧美极品美女视频网站在线观看免费 | 欧美日本一区二区高清播放视频| 亚洲美女性囗交| 亚洲欧美一区二区不卡| a天堂视频在线| 欧美激情xxxx| 琪琪久久久久日韩精品| 91精品91久久久中77777老牛| 久久久一区二区三区| 亚洲系列在线观看| 久久精品国产91精品亚洲| 亚洲国产一区二区三区网站| 久操手机在线视频| hitomi一区二区三区精品| 中文字幕视频网| 综合欧美国产视频二区| 国产精品视频一区二区三区综合| 蜜桃视频一区二区在线观看| 97se亚洲国产综合自在线观| 天堂av免费在线观看| 久久手机精品视频| a级日韩大片| 精品www久久久久奶水| 国产精品第13页| 黄片毛片在线看| 国产精品白嫩初高中害羞小美女| 999国产精品视频| 国产精品无码专区| 欧美在线综合视频| 在线看一级片| 欧美精品一区二区三区久久| 久久国产乱子精品免费女| 久久久精品国产sm调教网站| 精品视频在线播放免| 亚洲一区二区av| 91精品国产91久久久久麻豆 主演| 国产欧美一区二区三区在线看蜜臀 | 欧美日韩国产片| 9999在线视频| 亚洲巨乳在线观看| 成人免费毛片高清视频| 一道本无吗一区| 欧美一区二区三区精品电影| 91久久国产| 亚洲av无码一区二区三区人|