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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【主流技术】详解 Spring Boot 2.7.x 集成 ElasticSearch7.x 全过程(二)

發(fā)布時間:2023/11/23 javascript 61 coder
生活随笔 收集整理的這篇文章主要介紹了 【主流技术】详解 Spring Boot 2.7.x 集成 ElasticSearch7.x 全过程(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄
  • 前言
  • 一、添加依賴
  • 二、 yml 配置
  • 三、注入依賴
  • 四、CRUD 常用 API
      • ES 實體類
      • documents 操作
      • 常見條件查詢(重點)
      • 分頁查詢
      • 排序
      • 構(gòu)造查詢
      • 測試調(diào)用
  • 五、文章小結(jié)

前言

ElasticSearch 簡稱 es,是一個開源的高擴展的分布式全文檢索引擎,目前最新版本已經(jīng)到了8.11.x了。

它可以近乎實時的存儲、檢索數(shù)據(jù),且其擴展性很好,是企業(yè)級應(yīng)用中較為常見的檢索技術(shù)。

下面主要記錄學(xué)習(xí) ElasticSearch7.x 的一些基本結(jié)構(gòu)、在Spring Boot 項目里基本應(yīng)用的過程,在這里與大家作分享交流。

一、添加依賴

這里引用的依賴是 starter-data-elasticsearch,版本應(yīng)與 Spring Boot(我是2.7.2)的版本一致,并不是 Elasticsearch 的版本。

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-elasticsearch -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <version>2.7.2</version>
</dependency>

二、 yml 配置

spring:
  elasticsearch:
    uris: http://遠程主機的公網(wǎng)IP:9200
    username: 自己的用戶名
    password: 自己的密碼

使用 Docker 安裝的 Elasticsearch 設(shè)置賬號/密碼教程:https://blog.csdn.net/qq_38669698/article/details/130529829

因為 ES 設(shè)置了密碼,所以 Kibana 的配置也需要修改:https://blog.csdn.net/weixin_45956631/article/details/130636880


三、注入依賴

  1. (推薦)ElasticsearchRestTemplate 類來源于 org.springframework.data.elasticsearch.core 包,封裝了 Elasticsearch 的 RESTful API,使用起來很便捷。

    //直接引入即可,無需額外的 Bean 配置和序列化配置
    @Resource
    private ElasticsearchRestTemplate elasticTemplate;
    
  2. (推薦)ElasticsearchRepository 接口來源于 org.springframework.data.elasticsearch.repository 包, 該接口用于簡化對 Elasticsearch 中數(shù)據(jù)的操作。

    public interface ArticleRepository extends ElasticsearchRepository<ESArticle, String>{}
    

    注:ESArticle 為實體類,String 表示唯一 Id 的數(shù)據(jù)類型。

  3. (不推薦)在 Elasticsearch 7.15版本之后,官方已將它的高級客戶端 RestHighLevelClient 標(biāo)記為棄用狀態(tài),之后的版本會推薦新的 RestClient。

    經(jīng)過筆者對比實踐,無論是新/舊客戶端,在 Spring Boot 項目中都沒有上面前兩個使用起來便捷。但值得注意的是,很多企業(yè)以前的項目都會使用舊的 RestHighLevelClient 來寫業(yè)務(wù)。

    @Resource
    private RestHighLevelClient highLevelClient;
    
    @Resource
    private RestClient restClient;
    

四、CRUD 常用 API

  • ES 實體類

    和 MySQL、MongoDB 在 Spring 中的實體類一樣,需要將字段和類屬性進行映射,同樣還可以使用注解進行簡單配置。

    以下是文章 ESArticle 的實體類,屬性包含標(biāo)題、內(nèi)容、標(biāo)簽、點贊數(shù)/收藏數(shù)等:

    @Data
    @Document(indexName = "article")
    @EqualsAndHashCode(callSuper = true)
    public class ESArticle extends BaseEntity implements Serializable {
        
        private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    
        /**
         * 唯一標(biāo)識 id
         */
        @Id
        @Field(type = FieldType.Text)
        private String id;
    
        /**
         * 標(biāo)題,字段類型為 Text,沒有 String 類型;分詞類型為 ik 分詞器的最細顆粒度劃分法。
         */
        @Field(type = FieldType.Text, analyzer = "ik_max_word")
        private String title;
    
        /**
         * 內(nèi)容
         */
        @Field(type = FieldType.Text, analyzer = "ik_max_word")
        private String content;
    
        /**
         * 標(biāo)簽列表
         */
        private List<String> tags;
    
        /**
         * 點贊數(shù)
         */
        private Integer thumbNum;
    
        /**
         * 收藏數(shù)
         */
        private Integer favourNum;
    
        /**
         * 創(chuàng)建用戶 id
         */
        @Field(type = FieldType.Text)
        private String userId;
    
        /**
         * 創(chuàng)建時間,單獨存儲,字段類型為 Date ,自定義格式
         */
        @Field(store = true, type = FieldType.Date, format = {}, pattern = DATE_TIME_PATTERN)
        private Date createTime;
    
        /**
         * 更新時間,單獨存儲,字段類型為 Date ,自定義格式
         */
        @Field(store = true, type = FieldType.Date, format = {}, pattern = DATE_TIME_PATTERN)
        private Date updateTime;
    
        /**
         * 是否刪除
         */
        private Integer isDelete;
    }
    
  • documents 操作

    documents 的概念和 MySQL 中的行類似,指的是一條條的記錄,但是 ES 里所有的數(shù)據(jù)都是 JSON 格式的,所以看起來就像是一個個文檔了。

    以下簡單的 CRUD 都由 ArticleRepository 來完成,下一小節(jié)復(fù)雜的查詢交給 ElasticsearchRestTemplate 來完成。

    • 新增(批量)

          @Resource
          private ArticleMapper articleMapper;
      
          @Resource
          private ArticleRepository articleRepository;
      
          //todo: ES里的數(shù)據(jù)來源于數(shù)據(jù)庫,需要做遷移,業(yè)務(wù)數(shù)據(jù)不會直接寫進數(shù)據(jù)庫
          //todo: 有全量和增量兩種方式做數(shù)據(jù)遷移,或者引入第三方框架處理
          //todo: 此處暫不做數(shù)據(jù)遷移展示,就直接往 ES 里寫,然后就當(dāng) ES 里已經(jīng)有數(shù)據(jù)了,再做 CRUD 以及查詢
          @Override
          public Boolean addDocuments(){
              LambdaQueryWrapper<Article> wrapper = new LambdaQueryWrapper<>();
              List<Article> articleList = articleMapper.selectList(wrapper);
              if (CollectionUtils.isNotEmpty(articleList)){
                  // 這里是兩個實體的屬性轉(zhuǎn)換,這里不過多展開講
                  List<ESArticle> esArticleList = articleList.stream().map(ESArticle::dbToEs).collect(Collectors.toList());
                  articleRepository.saveAll(esArticleList);
                  return Boolean.TRUE;
              }
              return Boolean.FALSE;
          }
      
    • 修改(更新)

          //todo: 還可以使用 elasticTemplate 的 update() 來進行更新,不過一般沒有單獨針對 es 的數(shù)據(jù)更新需求    
          @Override
          public Boolean updateDocuments(){
              ESArticle esArticle = articleRepository.findById("18094375634670546").orElse(null);
              if (Objects.nonNull(esArticle)){
                  esArticle.setTitle("測試修改標(biāo)題更新操作");
                  articleRepository.save(esArticle);
                  return Boolean.TRUE;
              }
              return Boolean.FALSE;
          }
      
    • 獲取

          @Override
          public List<ESArticle> getESDocuments(){
              List<ESArticle> list = Lists.newArrayList();
              Iterable<ESArticle> esArticleList = this.articleRepository.findAll(Sort.by(Sort.Order.desc("id")));
              esArticleList.forEach(list::add);
              return list;
          }
      
    • 刪除

          @Override
          public Boolean deleteESDocuments(){
              //如果存在該條 document 則繼續(xù)刪除
              if (this.articleRepository.existsById("18094375634670546")){
                  this.articleRepository.deleteById("18094375634670546");
                  return Boolean.TRUE;
              }
              return Boolean.FALSE;
          }
      
  • 常見條件查詢(重點)

    以下會詳細地演示一下 BoolQueryBuilder 條件構(gòu)造、常見 QueryBuilders 的方法等多條件復(fù)雜查詢場景:

        //todo: 企業(yè)項目中真正的復(fù)雜條件查詢
        @Override
        public PageInfo<ESArticle> testSearchFromES(ArticleSearchDTO articleSearchDTO){
            //完整的合法 id
            String id = articleSearchDTO.getId();
            //非法 id
            String notId = articleSearchDTO.getNotId();
            //搜索框輸入的內(nèi)容(實際會從標(biāo)簽/內(nèi)容/標(biāo)題中查找)
            String searchText = articleSearchDTO.getSearchWord();
            //單獨在標(biāo)題中查找
            String title = articleSearchDTO.getTitle();
            //單獨在內(nèi)容中查找
            String content = articleSearchDTO.getContent();
            //單獨在標(biāo)簽中查找(全部標(biāo)簽)
            List<String> tagList = articleSearchDTO.getTags();
            //任意標(biāo)簽
            List<String> orTagList = articleSearchDTO.getOrTags();
            //按照創(chuàng)建者的 userId 查找
            String userId = articleSearchDTO.getUserId();
            // 布爾查詢初始化
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
            // 過濾,首先被刪除的就不要了
            boolQueryBuilder.filter(QueryBuilders.termQuery(this.fn.fnToFieldName(ESArticle::getIsDelete), NumberUtils.INTEGER_ZERO));
            //如果輸入的是 id 那么就不對 id 分詞,然后過濾掉不符合該 id 的其它文檔
            if (StringUtils.isNotBlank(id)) {
                boolQueryBuilder.filter(QueryBuilders.termQuery("id", id));
            }
            //如果輸入的是非法 id 那么什么也查不到,取反(也就是所有)返回
            if (StringUtils.isNotBlank(notId)) {
                boolQueryBuilder.mustNot(QueryBuilders.termQuery("id", notId));
            }
            //創(chuàng)建者 userId 也不分詞,過濾掉不匹配的
            if (StringUtils.isNotBlank(userId)) {
                boolQueryBuilder.filter(QueryBuilders.termQuery("createId", userId));
            }
            // 必須包含所有標(biāo)簽
            if (CollectionUtils.isNotEmpty(tagList)) {
                for (String tag : tagList) {
                    boolQueryBuilder.filter(QueryBuilders.termQuery("tags", tag));
                }
            }
            // 包含任何一個標(biāo)簽即可
            if (CollectionUtils.isNotEmpty(orTagList)) {
                BoolQueryBuilder orTagBoolQueryBuilder = QueryBuilders.boolQuery();
                // DB 實體中 tag 字段為 String,而 ES 實體該字段的類型為 List,所以做循環(huán)遍歷
                for (String tag : orTagList) {
                    orTagBoolQueryBuilder.should(QueryBuilders.termQuery("tags", tag)).minimumShouldMatch(1);
                }
                //filter 可以結(jié)合 bool 做更復(fù)雜的過濾
                boolQueryBuilder.filter(orTagBoolQueryBuilder);
            }
            // 按關(guān)鍵詞檢索(主要的搜索框,關(guān)鍵詞會在兩個字段里匹配)
            if (StringUtils.isNotBlank(searchText)) {
                boolQueryBuilder.should(QueryBuilders.matchQuery("title", searchText));
                boolQueryBuilder.should(QueryBuilders.matchQuery("content", searchText));
                boolQueryBuilder.minimumShouldMatch(1);
            }
            // 單獨按標(biāo)題檢索
            if (StringUtils.isNotBlank(title)) {
                boolQueryBuilder.should(QueryBuilders.matchQuery("title", title));
            }
            // 單獨按內(nèi)容檢索
            if (StringUtils.isNotBlank(content)) {
                boolQueryBuilder.should(QueryBuilders.matchQuery("content", content));
            }
        }
    
  • 分頁查詢

    Spring Data 自帶的分頁方案,即 PageRequest 對象:

            // 分頁參數(shù):起始頁為 0
            long current = articleSearchDTO.getCurrent() - 1;
            long pageSize = articleSearchDTO.getPageSize();
            PageRequest pageRequest = PageRequest.of((int) current, (int) pageSize);
    
  • 排序

    設(shè)置了按條件排序則以排序字段為準(zhǔn)來返回,沒設(shè)置排序則默認按照分數(shù),即匹配度返回:

            // 排序字段,可以支持多個
            String sortField = articleSearchDTO.getSortField();
            SortBuilder<?> sortBuilder = SortBuilders.scoreSort();
            if (StringUtils.isNotBlank(sortField)) {
                sortBuilder = SortBuilders.fieldSort(sortField).order(SortOrder.DESC);
            }
    
  • 構(gòu)造查詢

    將所有的條件放進 NativeSearchQueryBuilder 對象,并調(diào)用elasticTemplate.search()方法,最后放入PageInfo(這里引入的是com.github.pagehelper)對象返回:

            // 構(gòu)造查詢
            NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                    .withQuery(boolQueryBuilder)
                    .withSorts(sortBuilder)
                    .withPageable(pageRequest).build();
            // 獲取查詢對象的結(jié)果:放入所有條件,指定索引實體
            SearchHits<ESArticle> searchHits = elasticTemplate.search(searchQuery, ESArticle.class);
            //todo: 先以 ES 的數(shù)據(jù)為準(zhǔn),后期數(shù)據(jù)遷移再考慮使用 MySQL 的數(shù)據(jù)源
            //初始化 page 對象
            PageInfo<ESArticle> pageInfo = new PageInfo<>();
            pageInfo.setList(searchHits.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList()));
            pageInfo.setTotal(searchHits.getTotalHits());
            System.out.println(pageInfo);
            return pageInfo;
    
  • 測試調(diào)用
        @Test
        public void testSearchFromES(){
            ArticleSearchDTO articleSearchDTO = new ArticleSearchDTO();
            articleSearchDTO.setId("18094375634670546");
            //articleSearchDTO.setSearchWord("是");
            //articleSearchDTO.setTitle("標(biāo)題");
            //articleSearchDTO.setTags(Collections.singletonList("es"));
            //articleSearchDTO.setSortField("createTime");
            esTestService.testSearchFromES(articleSearchDTO);
        }
    

測試數(shù)據(jù)如下圖所示:


五、文章小結(jié)

使用 ElasticSearch 實現(xiàn)全文檢索的過程并不復(fù)雜,只要在業(yè)務(wù)需要的地方創(chuàng)建 ElasticSearch 索引,將數(shù)據(jù)放入索引中,就可以使用 ElasticSearch 集成在 Spring Boot 中對搜索對象進行查詢操作了。

無論是創(chuàng)建索引、精準(zhǔn)匹配、還是字段高亮等操作,其本質(zhì)上還是一個面向?qū)ο蟮倪^程。和 Java 中的其它“對象”一樣,只要靈活運用這些“對象”的使用規(guī)則和特性,就可以滿足業(yè)務(wù)上的需求。

關(guān)于 ElasticSearch7.x 的基本結(jié)構(gòu)和在 Spring Boot 項目中的集成應(yīng)用就和大家分享到這里。如有錯誤和不足,還期待大家的指正與交流。

參考文檔:

  1. ElasticSearch 官方查詢 API 文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html
  2. Spring Data ElasticSearch 官方:https://docs.spring.io/spring-data/redis/docs/2.6.10/api/

總結(jié)

以上是生活随笔為你收集整理的【主流技术】详解 Spring Boot 2.7.x 集成 ElasticSearch7.x 全过程(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

免费韩国av | 婷婷激情综合网 | 色婷婷综合久色 | 欧美激情精品久久久久久 | www五月天com | 五月天婷亚洲天综合网鲁鲁鲁 | 美女免费视频观看网站 | 人人干在线观看 | 亚洲综合色丁香婷婷六月图片 | 国产超碰在线 | 久久久精品影视 | 国产精品一区二区三区四区在线观看 | 操操操综合 | 欧美另类xxxxx | 天天做天天爱天天爽综合网 | 国产精品久久久久久久久久了 | 久久99日韩| 亚洲日韩中文字幕 | 国产韩国精品一区二区三区 | 日韩,中文字幕 | 亚洲一区二区三区四区在线视频 | 精品国产免费看 | 精品自拍sae8—视频 | 久草在线免费资源站 | 超碰在线免费福利 | 亚洲精品乱码久久久久久蜜桃欧美 | 日韩伦理一区二区三区av在线 | 久久久18 | 中文国产字幕 | 四虎在线影视 | 日韩精品欧美精品 | 亚洲专区免费观看 | 国产精品淫 | 一级欧美一级日韩 | 综合国产视频 | 国产高清视频免费在线观看 | 天天操天天操天天操天天操 | 久章草在线观看 | 最近日本中文字幕 | 国产高清久久久久 | 国产女人18毛片水真多18精品 | 国产精品久久一 | 日日干精品 | 亚洲男男gⅴgay双龙 | 在线免费黄| 天天舔夜夜操 | 国产精品6999成人免费视频 | 国产精品无 | 欧美了一区在线观看 | 欧美极品久久 | av免费电影在线观看 | 免费h精品视频在线播放 | 日本在线观看一区二区 | 久久网站免费 | 欧美日韩精品在线播放 | 精品视频亚洲 | 999久久a精品合区久久久 | 久精品视频在线 | 欧美日韩国产综合一区二区 | 亚洲成人网av | 丁香久久激情 | 日韩在线看片 | 天天操夜夜操天天射 | 999久久久久久久久久久 | 久久精品看 | 日本久久91| 99久久久国产精品美女 | 五月婷婷av | 久久不色| 婷婷激情站 | av在线电影免费观看 | 日韩亚洲精品电影 | 精品少妇一区二区三区在线 | 精品久久久久久亚洲综合网 | 黄色大全免费网站 | 91av原创| 337p日本大胆噜噜噜噜 | 国产精品淫| 免费精品在线观看 | 国产精品2018 | 国产成人精品一区二区三区免费 | av在线短片 | 久久精品一区二区三区中文字幕 | 亚洲综合视频网 | 黄色免费观看视频 | 亚洲一区二区三区毛片 | 国产精品入口麻豆www | 天堂av影院 | 国产精品亚洲人在线观看 | 精品专区一区二区 | 在线观看中文字幕 | 欧美日韩国产色综合一二三四 | 安徽妇搡bbbb搡bbbb | 国产黄色片免费在线观看 | 九月婷婷综合网 | 三上悠亚一区二区在线观看 | 人人搞人人爽 | 狠狠干婷婷 | 精品亚洲国产视频 | 精品一区二区视频 | 国产精品美女在线观看 | 日韩在线短视频 | www黄在线| 欧美精品在线一区 | 免费看国产曰批40分钟 | 久久免费观看少妇a级毛片 久久久久成人免费 | 成人在线视频一区 | 中文国产字幕 | 97色国产 | 色综合国产 | 日韩在线观看高清 | 免费精品人在线二线三线 | 高清在线一区二区 | 胖bbbb搡bbbb擦bbbb| www.在线观看视频 | 91av九色 | 91av视频网站 | 日韩3区| 在线日韩av | 久久精品女人毛片国产 | 日韩在线免费视频 | 久久久久五月 | 免费观看性生交 | 精选久久 | www.狠狠操.com | 国产一区视频免费在线观看 | 欧美精品中文 | 香蕉看片| 国产黄色播放 | 国产特级毛片aaaaaa | 色综合天天天天做夜夜夜夜做 | 精品国内 | 久久99热这里只有精品国产 | 欧美aa级 | 人人舔人人爱 | 日韩免费在线看 | 亚洲四虎影院 | 一级黄毛片 | 久久久国产精品视频 | 狠狠狠狠狠狠 | 免费看十八岁美女 | 亚洲闷骚少妇在线观看网站 | 欧美日韩一区二区免费在线观看 | 免费视频一二三区 | 亚洲区精品视频 | 成人国产精品电影 | 久久国产精彩视频 | 久久不卡国产精品一区二区 | 亚洲成人黄 | 黄色日批网站 | 99r精品视频在线观看 | 在线欧美日韩 | 久久精品国产一区二区电影 | 国产真实精品久久二三区 | 成人在线电影观看 | 久久精品视频观看 | 久久国产精品99久久久久 | 91精品免费在线视频 | 激情在线免费视频 | 成人免费 在线播放 | 亚洲免费小视频 | 人人爽人人爽人人 | 欧美一级片在线 | 91九色网站 | 久草免费在线视频 | 字幕网资源站中文字幕 | 欧美成人黄色片 | 成人午夜电影在线播放 | 中文字幕91在线 | 欧美老人xxxx18 | 日韩激情视频 | 九九热在线免费观看 | 国产一区二区中文字幕 | 999久久a精品合区久久久 | 丁香 久久 综合 | 日本精品久久久久 | 国产护士hd高朝护士1 | 国内免费的中文字幕 | 人人爽人人爽av | 久久99精品国产一区二区三区 | 日本久久久精品视频 | 亚洲精品视频播放 | 欧美日韩久久久 | 国产亚洲精品美女 | 在线观看成年人 | 日韩久久久久久久久久 | 久草在线视频资源 | 欧美日韩国产一区二区三区在线观看 | 伊人色综合久久天天网 | 波多野结衣理论片 | 亚洲精品乱码久久久久久 | 香蕉视频网站在线观看 | 欧美成年网站 | 91在线看片 | 日日天天| 国产精品原创在线 | 天天摸天天弄 | 国产成人在线精品 | 一区二区三区视频网站 | 国产精品一区二区三区四 | 中文字幕国产一区二区 | 国产午夜三级一二三区 | 香蕉色综合 | 丁香婷婷色 | 欧美激情第八页 | www.夜夜干.com| www.av在线.com | 日韩综合色 | 欧美xxxx性xxxxx高清 | 久久草在线免费 | 久av在线| a天堂一码二码专区 | 色的网站在线观看 | 日本在线精品视频 | 一区二区三区四区影院 | 久久综合免费视频影院 | 2019免费中文字幕 | 日本黄色免费看 | 日日干夜夜操视频 | 九热在线| 亚洲aⅴ在线观看 | 久久久久久久久久免费 | 精品久久精品 | 高清不卡一区二区三区 | 亚洲一区 影院 | 又黄又爽又刺激的视频 | 日日夜夜精品免费 | 亚洲伊人婷婷 | 亚洲精品久久久久中文字幕m男 | 中国一级片在线播放 | 高潮久久久久久久久 | 91欧美视频网站 | 一区精品久久 | 欧美最新大片在线看 | 伊人官网| 亚洲免费国产视频 | 国产亚洲精品精品精品 | 国产在线黄色 | 五月天激情婷婷 | 97色噜噜| 亚洲欧洲精品一区二区精品久久久 | 精品久久五月天 | 久久中文字幕视频 | 国产精品黄色在线观看 | 激情综合久久 | 日韩精品免费一区二区 | 免费在线观看一区二区三区 | 婷婷伊人综合 | 欧美超碰在线 | 97国产精品亚洲精品 | 精品毛片在线 | 欧美日韩另类视频 | a久久免费视频 | 久久久国产精华液 | 中文字幕在线观看三区 | 偷拍福利视频一区二区三区 | a在线播放| 久久丁香| 二区三区中文字幕 | 欧美日韩精品在线一区二区 | 黄色在线看网站 | 亚洲一区久久久 | 丁香六月五月婷婷 | 亚洲精区二区三区四区麻豆 | 99热播精品| 久久久久日本精品一区二区三区 | 91成人在线视频 | 久热免费在线观看 | 日日夜操| 免费一级片观看 | 欧美三级在线播放 | 亚洲91中文字幕无线码三区 | 国产a级片免费观看 | 免费观看国产精品视频 | 天天天天爱天天躁 | 中文国产成人精品久久一 | 九九热在线精品视频 | 国产中文字幕视频 | 国产午夜三级一区二区三 | 久久综合久久88 | 日韩精品视频在线免费观看 | 国产999精品久久久久久绿帽 | 中文字幕乱偷在线 | 91亚洲国产成人久久精品网站 | 2020天天干夜夜爽 | 97超碰免费在线 | 日产av在线播放 | 婷婷 综合 色 | 国产你懂的在线 | 精品国产一区二区三区久久 | 国产精品麻 | 亚洲激情精品 | 国产一区不卡在线 | 国产精品一区二区三区四区在线观看 | 丁香婷婷成人 | 国产日本亚洲高清 | 日韩欧美区 | 人人射人人射 | 精品国产成人av在线免 | 人人射人人爽 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | www天天干| 精品亚洲成a人在线观看 | 五月激情站 | www.操.com| 四虎在线永久免费观看 | 久久久久久高潮国产精品视 | 精品国产一区二区三区蜜臀 | 色综合色综合色综合 | 性色视频在线 | 欧美在一区 | 狠狠色丁香九九婷婷综合五月 | 日韩欧美网址 | 国产91av视频在线观看 | 国产精品久久久久久五月尺 | 久久手机免费视频 | 国产免费不卡 | 西西人体4444www高清视频 | 欧美精品视 | 天天色天天综合网 | 久草在线中文888 | 日本视频高清 | 麻豆精品传媒视频 | 精品久久美女 | 91av网址 | 欧美精品久久久久久久久久久 | 精品视频久久 | 三级av网| 欧美性色黄大片在线观看 | 日韩精品视频在线观看免费 | 久久久国产精品免费 | 日韩精品一区二区三区中文字幕 | 久久天天躁狠狠躁亚洲综合公司 | 黄色网址国产 | 久久综合欧美精品亚洲一区 | 国产一区二区三区免费在线观看 | 欧美日韩高清一区二区三区 | 久草精品在线播放 | 国模吧一区 | 日韩美视频 | 久草视频2 | 中文字幕电影网 | 亚洲人成人在线 | 国产一级精品视频 | 天天做天天爱夜夜爽 | 国产一区二区三区网站 | 91精品国产麻豆国产自产影视 | 国产亚洲免费观看 | 国产精品福利av | 狠狠色丁香婷婷综合久小说久 | 亚洲成人精品 | 日韩久久精品一区二区 | 中文字幕刺激在线 | 久草免费资源 | 国产精品久久久久aaaa | 免费看黄在线看 | 色视频网站免费观看 | 日韩免费视频观看 | 欧美日本一区 | 精品久久久久一区二区国产 | 国产在线999 | av.com在线| 狠狠干美女 | 日韩成人免费在线 | 在线超碰av| 成人一级片视频 | 精品久久久久一区二区国产 | 午夜天使 | 91精品第一页 | 亚洲一区精品人人爽人人躁 | 久操免费视频 | 欧美成人久久 | 国产成人久久av977小说 | 24小时日本在线www免费的 | 天天艹| 国产成人一区二区在线观看 | 国产一区久久久 | 综合天堂av久久久久久久 | 国产小视频免费在线网址 | 国产一区二区三区免费观看视频 | 精品一区二区日韩 | 成人在线你懂得 | 国产视频在线一区二区 | 一区二区三区在线不卡 | 三级性生活视频 | 中文字幕日韩有码 | 亚洲成人av片 | 天天插天天狠天天透 | 97人人爽 | 日本久久中文字幕 | 欧美久久久一区二区三区 | 欧洲高潮三级做爰 | 人人超碰免费 | 成人综合婷婷国产精品久久免费 | 狠狠干狠狠久久 | 国产亚州av | 久久久一本精品99久久精品66 | 亚洲激情小视频 | 国产r级在线观看 | 激情在线网站 | 午夜国产福利在线观看 | 91精品专区| 97超碰国产精品 | 免费看黄在线看 | 狠狠撸电影 | 五月婷婷中文网 | 欧美三级在线播放 | 免费精品人在线二线三线 | 国产精品一区二区麻豆 | 日本99热 | 国产精品日韩在线播放 | 亚洲精品乱码久久 | 国产精品18毛片一区二区 | 国产精品久久久久久久99 | 国产精品入口a级 | 亚洲国产精品久久久久婷婷884 | 久久在现 | 中文字幕在线一二 | 亚洲成人999| 日韩美精品视频 | 国产精品ssss在线亚洲 | 亚洲精品一区二区三区在线观看 | 91九色精品| 欧美日韩一区二区三区视频 | 国产中文在线字幕 | 国产一区在线免费观看视频 | 亚洲精品国产精品国自产 | 欧美在线一二 | 黄色91免费观看 | 日本论理电影 | 天天操天天拍 | 日韩成人免费在线观看 | 久久综合加勒比 | 亚洲精品欧美成人 | 91精品免费视频 | 美女露久久 | 久草在线国产 | 狠狠干天天 | 日韩精品免费在线播放 | 亚洲国内精品在线 | 久久 一区 | 91日韩在线视频 | 91最新在线视频 | 波多在线视频 | 伊人婷婷在线 | 亚洲成人家庭影院 | 99久久久久国产精品免费 | 免费在线观看av网站 | 国产精品久久久久久爽爽爽 | 国产vs久久| 国内精品久久久久影院日本资源 | 在线观看日韩一区 | 国语久久| 美女免费黄网站 | 亚洲欧美乱综合图片区小说区 | 欧美色一色 | 亚洲精品中文字幕在线观看 | 日韩va亚洲va欧美va久久 | 国产黄色片免费在线观看 | 日韩a在线| 激情视频免费在线观看 | 日日躁你夜夜躁你av蜜 | 亚洲精品乱码久久久久久高潮 | 少妇性bbb搡bbb爽爽爽欧美 | 在线免费观看一区二区三区 | .国产精品成人自产拍在线观看6 | 99久久夜色精品国产亚洲 | 狠狠插狠狠操 | 国产亚洲视频在线免费观看 | 国产成人久久精品77777综合 | 99在线免费观看视频 | 最新国产精品拍自在线播放 | 天天色天天射天天干 | 九九综合九九 | 欧美日韩亚洲在线观看 | 精品视频免费 | 91少妇精拍在线播放 | 久久婷婷五月综合色丁香 | 伊人久久精品久久亚洲一区 | 中文字幕字幕中文 | free,性欧美 九九交易行官网 | 国产一级黄色av | 91成人短视频在线观看 | 97国产情侣爱久久免费观看 | 欧美成年人在线观看 | 9i看片成人免费看片 | www.色的| 在线观看免费av网 | 激情偷乱人伦小说视频在线观看 | 天堂va在线观看 | 久久精品视频网站 | 免费男女羞羞的视频网站中文字幕 | 成人一区二区在线观看 | 久久免费视频5 | 成年人在线看片 | 国内少妇自拍视频一区 | 欧美日韩免费观看一区=区三区 | 91香蕉国产在线观看软件 | 色综合网| 国产成人一区二区在线观看 | 网站免费黄 | 亚洲国产电影在线观看 | 911精品视频| 天天操天天摸天天射 | 在线精品在线 | 色偷偷97| 久久国内免费视频 | 欧美肥妇free | 久久高清国产视频 | 四虎在线永久免费观看 | 97天堂 | 婷婷深爱激情 | 在线只有精品 | 香蕉视频免费在线播放 | 外国av网 | 在线v | 欧美资源在线观看 | 亚洲精品国产综合久久 | 婷婷激情在线 | 99亚洲精品视频 | 国产999精品久久久久久 | wwwav视频 | 亚洲激情影院 | 超碰免费成人 | 久久你懂得 | 国产成人精品国内自产拍免费看 | 在线综合 亚洲 欧美在线视频 | 亚洲国产日韩av | 免费在线观看黄色网 | 久色网 | 久久久久免费网 | 亚洲精品一区二区三区高潮 | 99热最新地址 | 99九九热只有国产精品 | 国产精品久久久久久久久久久久冷 | 久久久久久国产精品久久 | 91高清免费看 | 中文字幕日韩免费视频 | www.国产在线视频 | 免费网址在线播放 | 国产精品精品国产色婷婷 | 成人网页在线免费观看 | 亚洲精品视频在线看 | 久久久精品在线观看 | 国产99久久久国产精品免费看 | 久草免费福利在线观看 | 色射爱| 久久成人在线 | 五月天婷婷狠狠 | 黄色片软件网站 | 免费成人av网站 | 久久视频在线观看 | avove黑丝 | 亚洲午夜精品久久久久久久久 | 91尤物在线播放 | 天天爱天天插 | 在线天堂日本 | 亚洲欧洲精品视频 | 夜夜躁日日躁狠狠躁 | 国产精品精品国产婷婷这里av | 69亚洲视频 | 四虎成人av| 亚洲国产成人在线 | 4hu视频| 天天舔天天射天天操 | 日韩av免费在线电影 | 亚洲欧美日本国产 | av高清免费在线 | 日日夜夜免费精品视频 | 久久这里只有精品久久 | 欧美三级免费 | 日韩精品中文字幕有码 | 成人免费xxx在线观看 | 好看av在线| 97精品国产97久久久久久久久久久久 | 日本精品视频在线观看 | 婷婷综合久久 | 中文字幕区 | 欧美色插 | 日本中文字幕在线观看 | 麻豆91视频 | 国产精品美女视频网站 | 国产一区在线免费 | 99国产在线 | 国产精品原创在线 | 日日夜夜免费精品 | 91中文字幕在线 | 欧洲不卡av | 中文字幕在线影院 | 黄色免费在线视频 | 性色av免费看 | 国产一级免费在线 | 成人av免费在线看 | 成人精品视频久久久久 | 999视频精品 | av黄色在线播放 | 日韩成人精品在线观看 | 五月天亚洲激情 | 中文字幕免费高清av | 成人午夜在线观看 | 国产99在线免费 | 日韩资源在线观看 | 91在线看视频 | 91亚洲精品久久久久图片蜜桃 | 欧洲不卡av | 中文字幕在线观看的网站 | 中文视频在线看 | 成年人app网址 | 视频一区视频二区在线观看 | 一区二区三区四区五区在线 | 在线成人免费 | 久久tv| 国产成人久久精品一区二区三区 | 奇米网网址 | 日韩一区二区免费视频 | 亚洲一区精品二人人爽久久 | 亚洲免费观看在线视频 | 婷婷色视频| 日韩精品久久久免费观看夜色 | 国产精品永久免费视频 | 天天操天天射天天操 | 国产精品成| 丰满少妇高潮在线观看 | 久久综合天天 | 97超碰免费 | 成人cosplay福利网站 | 欧美日韩亚洲在线观看 | 国产精品一区二区久久精品 | 精品麻豆| 亚洲免费在线观看视频 | 日韩欧美在线国产 | 不卡视频国产 | 亚洲经典视频 | 日韩综合一区二区 | 国产美女被啪进深处喷白浆视频 | 国色天香永久免费 | 亚洲国产福利视频 | 国产精品永久免费视频 | 人人爽人人做 | 免费看的黄色录像 | 亚洲专区 国产精品 | 国产资源网 | 国产在线一区二区 | 精品国产大片 | 国产精品日韩久久久久 | 婷婷丁香花五月天 | 久久综合五月婷婷 | 91视频在线自拍 | 国产精品嫩草在线 | 国产成在线观看免费视频 | 亚洲天堂精品视频 | 欧美色图亚洲图片 | 久久久亚洲成人 | 丁香高清视频在线看看 | 亚洲欧美日韩精品久久奇米一区 | 午夜体验区 | 日韩黄色一级电影 | 手机av电影在线 | 欧美激情xxxx性bbbb | 96精品在线 | 久久久www成人免费毛片麻豆 | 91插插插网站 | 久久久高清免费视频 | 福利视频一二区 | 欧美精品三级在线观看 | 久久一区91 | 日韩在线高清免费视频 | 在线免费高清一区二区三区 | 国内成人av | 手机av看片 | 349k.cc看片app| 九精品 | 黄色精品一区二区 | 81精品国产乱码久久久久久 | 丁香婷婷色综合亚洲电影 | 深夜免费网站 | 日韩电影一区二区三区 | 日本中文字幕在线一区 | 中文字幕免费中文 | 国产精品日韩 | 天天爱综合 | 成人久久久精品国产乱码一区二区 | 国产精品999久久久 久产久精国产品 | 五月婷婷导航 | 蜜臀久久99精品久久久久久网站 | 精品久久一级片 | 狠狠88综合久久久久综合网 | 久草www| 欧美一二三区播放 | 97视频久久久 | 国产区av在线 | 特级片免费看 | 涩涩色亚洲一区 | 久草视频在线免费 | 日本中文乱码卡一卡二新区 | 黄色精品国产 | 亚洲成人动漫在线观看 | 黄色网www| 亚洲午夜小视频 | 免费观看一级 | 国产精品久久久区三区天天噜 | 午夜精品久久久久久久久久久久久久 | 国产麻豆果冻传媒在线观看 | 色婷婷导航 | 日韩在线网 | 国产一级三级 | 亚洲aⅴ在线观看 | 久久国产免费 | 在线免费中文字幕 | 99电影456麻豆| 少妇bbw搡bbbb搡bbb | 欧美疯狂性受xxxxx另类 | 久久论理 | 日韩高清精品一区二区 | 久久成人精品电影 | 福利网址在线观看 | 色综合久久久 | 美女视频黄是免费的 | 欧美成年性 | 婷婷色综 | 国产黄色网 | 91在线免费播放视频 | 91成熟丰满女人少妇 | 六月丁香社区 | 91在线精品一区二区 | 在线国产一区二区三区 | 久久久久久久久久久黄色 | 成人国产电影在线观看 | 国产成人一级电影 | 国产1区2| 天天操伊人 | 福利久久久 | 午夜电影 电影 | 日韩av三区 | 成人h在线播放 | 亚洲人成免费网站 | 成人午夜黄色影院 | 国产精品av电影 | 国产成人免费在线 | 成人黄色在线看 | 美女中文字幕 | 久久99久久精品国产 | 国产五十路毛片 | 天天色视频 | 久久久久综合网 | 国内丰满少妇猛烈精品播 | 日韩久久一区 | 久久人人爽av| 亚洲综合色站 | 亚洲精品视频在线观看免费 | 五月天色丁香 | 国产玖玖精品视频 | 久久精品99国产精品 | 国产一级视频在线 | 免费看特级毛片 | 91在线视频免费观看 | av超碰在线 | 中国一级片视频 | 婷婷丁香激情五月 | 日本中文字幕视频 | 国产福利精品一区二区 | bbw av| 亚洲综合五月天 | 日本黄色免费网站 | 亚洲国产精品成人va在线观看 | 欧美日韩一区二区三区在线免费观看 | 深爱激情婷婷网 | 欧美日韩国产一区二区三区在线观看 | 天天操天天添 | 久久丁香 | 九九九视频在线 | www.天天草 | 国产99精品在线观看 | 中文字幕在线视频网站 | 99午夜| avav99| 中文字幕视频免费观看 | 999久久久免费视频 午夜国产在线观看 | 日韩欧美视频一区二区 | 免费精品 | 色综合中文字幕 | 日日碰狠狠躁久久躁综合网 | 国产精品99免费看 | 成年人免费观看国产 | 特级西西www44高清大胆图片 | 成人黄色小视频 | 视频1区2区 | 久久久蜜桃一区二区 | 久久综合操 | 欧美一区二区在线免费观看 | 成人一级视频在线观看 | 亚洲精品乱码久久久久久按摩 | 国产高清在线不卡 | 天天操天天吃 | 日韩欧美高清在线观看 | 亚洲免费av在线 | 久久久精品免费看 | 婷婷色五| 国产h片在线观看 | 天堂在线视频免费观看 | 美女黄视频免费 | 福利一区二区三区四区 | 在线视频日韩 | 国产成人中文字幕 | 日本二区三区在线 | 日韩成人在线免费观看 | 久久av影视 | 亚洲视频六区 | 中文字幕在线资源 | 一本一本久久a久久精品综合小说 | 国精产品满18岁在线 | 色综合久久精品 | 日本最大色倩网站www | 中文字幕一区在线观看视频 | 在线直播av | 国产精品精品国产色婷婷 | av黄色免费在线观看 | 欧美日韩视频精品 | av福利在线免费观看 | 欧美激情综合五月色丁香小说 | 91传媒免费观看 | 丝袜美腿在线视频 | www.久久久com| 久久福利国产 | 日本中文字幕系列 | 在线电影 一区 | 久久午夜精品影院一区 | 精品一区二区三区久久 | 国产生活一级片 | 免费一区在线 | 成人网大片| 国产老太婆免费交性大片 | 香蕉久久久久久av成人 | 国产高清免费在线观看 | 久久9精品| 日操操 | 国产精品电影在线 | 国产一区二区三区高清播放 | 精品视频专区 | 国产成人av免费在线观看 | 99这里只有精品视频 | 久久久久久看片 | 97在线观看免费视频 | 国产精品白虎 | 综合久久精品 | 国内外成人在线视频 | 最近日韩免费视频 | 99 国产精品 | 91精品国产91 | 四虎影视精品永久在线观看 | 亚洲九九爱 | 亚洲精品综合欧美二区变态 | 国产精品视频久久 | 中文字幕电影一区 | 久久er99热精品一区二区 | 亚州欧美精品 | 色多多污污在线观看 | 91av视频网站| 日韩免费在线视频观看 | 日韩特黄一级欧美毛片特黄 | 国外调教视频网站 | 国产日韩在线一区 | 免费在线观看成人小视频 | 久久午夜影视 | 欧美日韩精品免费观看 | 日韩精品一区二区免费视频 | 99免费看片 | 国产精品久久久久久久久搜平片 | 欧美精品三级在线观看 | 日韩精品无 | 国产激情小视频在线观看 | 久草视频在线观 | 国产91全国探花系列在线播放 | 国产在线观看一 | 欧美精品久久人人躁人人爽 | 欧美久久影院 | 日本在线视频网址 | 午夜视频免费在线观看 | 日韩国产欧美在线播放 | 字幕网在线观看 | 国产精品中文字幕av | 成人宗合网 | 国产二区视频在线 | 日韩一区二区三区视频在线 | 国产精品一区二区三区在线 | 黄色小说视频在线 | free. 性欧美.com | 日韩v在线 | 国际精品久久久久 | 国产又粗又长的视频 | 午夜精品一区二区三区在线视频 | 国产精品1024 | 亚洲天堂社区 | 久久精品国产99国产 | 欧美aaaxxxx做受视频 | 精品少妇一区二区三区在线 | 免费人人干 | 成人超碰97 | 日韩欧美中文 | 99精品视频在线观看播放 | 日韩色视频在线观看 | 亚洲资源网 | 久久久久久久99精品免费观看 | 国产成人精品一区二区三区在线观看 | 欧美亚洲精品一区 | 国产成人精品亚洲日本在线观看 | av福利第一导航 | 国产精品视频一二三 | 久草久草久草久草 | 久久久久久免费视频 | 免费在线观看污网站 | 免费黄色在线 | 国偷自产中文字幕亚洲手机在线 | 99视频在线精品免费观看2 | 国产精品久久久久久高潮 | 成人av.com | 国产在线播放一区二区三区 | 午夜影院三级 | 成人高清在线 | 能在线观看的日韩av | av在线影视| 亚洲第五色综合网 | 国产涩涩网站 | 免费看黄的视频 | 五月婷在线观看 | 成人在线视频你懂的 | 尤物一区二区三区 | www.69xx| 国产人成在线视频 | 深爱五月网| 毛片基地黄久久久久久天堂 | 久久在线免费观看视频 | 国产精品久久一区二区三区不卡 | 欧美精品久久久久久久久免 | 2019中文 | 国产精品女同一区二区三区久久夜 | 四虎影视成人精品 | 精品一区二区在线免费观看 | 国产精品资源 | 久久视频免费看 | 日韩在线高清视频 | 99久久久国产精品免费观看 | 91中文字幕 | 激情中文字幕 | 中文字幕二区 | 国产精品久久片 | 一区二区不卡在线观看 | 人人干人人干人人干 | 久久国产成人午夜av影院潦草 | 免费av电影网站 | 日韩av二区 | 在线观看精品视频 | 日韩一区二区三区在线观看 | 久久69av| 在线看片中文字幕 | 欧美午夜精品久久久久久浪潮 | 在线观看日韩精品 | www.eeuss影院av撸| 久久99热久久99精品 | 日韩天堂在线观看 | 美女网色| 在线日韩中文 | 在线观看免费成人 | av动图| 免费av免费观看 | 国产 视频 高清 免费 | 国产精品一区二区三区久久久 | 日韩av电影中文字幕在线观看 | av免费线看 | 亚洲mv大片欧洲mv大片免费 | 国产精品理论视频 | 96av视频| 日韩久久久久 | 国产午夜三级一区二区三桃花影视 | 91久久久久久国产精品 | 福利一区二区 | av在线亚洲天堂 | 久久久久99精品成人片三人毛片 | 日韩在线电影一区 | 激情久久一区二区三区 | 亚洲婷婷综合色高清在线 | 久久成人久久 | 狠狠躁夜夜a产精品视频 | 欧美日韩1区2区 | 99久热在线精品视频成人一区 | 91在线中文 | 国产成人久久 | 亚洲欧美精品在线 | 亚洲二区精品 | 久久久午夜电影 | 中文字幕在线播放一区 | 国产视频一区二区在线 | 西西4444www大胆视频 | 国产精品一区二区美女视频免费看 | 91精品国产99久久久久久红楼 | 深爱开心激情网 | 激情综合五月天 | 国产视频久 |