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

Spring Boot整合elasticSearch 實現數據高效搜索,實戰講解!

開發 前端
那 ElasticSearch 究竟是干啥的呢?本質其實是一個基于 Lucene 開發的搜索服務器,它提供了一個基于 RESTful web 接口的分布式多用戶能力的全文搜索引擎,能夠達到實時搜索、穩定、可靠、快速、安裝使用方便等特點。同時,作為 Apache 許可條款下的開放源碼,目前已經成為一種流行的企業級搜索引擎。

一、背景介紹

在2018年10月5日,一個做數據搜索服務的軟件初創公司 Elastic,在納斯達克上市。

而我們所熟悉的 ElasticSearch,正是 Elastic 公司最出名的產品之一,其中還包括有分布式日志解決方案 ELK(Elastic Search、Logstash、Kibana)、Beats、ECE等。

那 ElasticSearch 究竟是干啥的呢?

本質其實是一個基于 Lucene 開發的搜索服務器,它提供了一個基于 RESTful web 接口的分布式多用戶能力的全文搜索引擎,能夠達到實時搜索、穩定、可靠、快速、安裝使用方便等特點。

同時,作為 Apache 許可條款下的開放源碼,目前已經成為一種流行的企業級搜索引擎。

既然在企業開發中如此流行,肯定少不了 Springboot 的參與,今天我們就一起來探討一下 SpringBoot 與 ElasticSearch 的整合,看看它是否真的如所介紹的那樣優秀!

本文主要介紹分為以下幾個部分:

  • 第一部分:環境準備,安裝ElasticSearch,安裝 ElasticSearch-head 插件可視化web界面
  • 第二部分:SpringBoot 整合 ElasticSearch 開發
  • 第三部分:CRUD 測試

二、ElasticSearch 安裝

為了和真實環境一致,我們采用CentOS7來部署 ElasticSearch 服務。

建議把所需的安裝包,手動從網上下載下來,因為服務器下載 ElasticSearch 安裝包速度像蝸牛……,非常非常慢~~,可能是國內的網絡原因吧!

登錄https://www.elastic.co/cn/downloads/elasticsearch,選擇相應的系統環境下載軟件包,小編我采用的是CentOS,所以選擇Linux環境。

圖片圖片

2.1、安裝JDK(已經安裝過,可以跳過)

Elasticsearch 是用 Java 語言開發的,所以在安裝之前,需要先安裝一下JDK

yum -y install java-1.8.0-openjdk

查看java安裝情況

java -version

圖片圖片

2.2、安裝ElasticSearch

進入到對應上傳的文件夾,安裝ElasticSearch

rpm -ivh elasticsearch-6.1.0.rpm

查找安裝路徑

rpm -ql elasticsearch

一般是裝在/usr/share/elasticsearch/下。

2.3、設置data的目錄

創建/data/es-data目錄,用于elasticsearch數據的存放

mkdir -p /data/es-data

修改該目錄的擁有者為elasticsearch

chown -R elasticsearch:elasticsearch /data/es-data

2.4、設置log的目錄

mkdir -p /log/es-log

修改該目錄的擁有者為elasticsearch

chown -R elasticsearch:elasticsearch /log/es-log

2.5、修改配置文件elasticsearch.yml

vim /etc/elasticsearch/elasticsearch.yml

修改如下內容:

#設置節點名稱
cluster.name: my-es

#設置data存放的路徑為/data/es-data
path.data: /data/es-data

#設置logs日志的路徑為/log/es-log
path.logs: /log/es-log

#設置內存不使用交換分區,配置了bootstrap.memory_lock為true時反而會引發9200不會被監聽,原因不明
bootstrap.memory_lock: false

#設置允許所有ip可以連接該elasticsearch
network.host: 0.0.0.0

#開啟監聽的端口為9200
http.port: 9200

#增加新的參數,為了讓elasticsearch-head插件可以訪問es (5.x版本,如果沒有可以自己手動加)
http.cors.enabled: true
http.cors.allow-origin: "*"

2.6、啟動elasticsearch

啟動

systemctl start elasticsearch

查看狀態

systemctl status elasticsearch

設置開機啟動

systemctl enable elasticsearch

啟動成功之后,測試服務是否開啟

curl -X GET http://localhost:9200

返回如下信息,說明安裝、啟動成功了

圖片圖片

同時也可以遠程測試一下,如果網絡被拒絕,檢查防火墻是否開啟

#查詢防火墻狀態
firewall-cmd --state

如果狀態是active表示已經開啟,可以將其關閉

#關閉防火墻
systemctl stop firewalld.service

如果不想開機啟動,可以輸入如下命令

#禁止firewall開機啟動
systemctl disable firewalld.service

我們再來測試一下遠程是否可以正常訪問,結果如下:

圖片圖片

已經可以正常訪問了。

三、ElasticSearch-head 安裝

上面我們介紹了 ElasticSearch 的安裝,但是只能通過接口去查詢數據,能不能通過可視化界面來查詢數據呢?

ElasticSearch-head,就是一個提供可視化界面的 ElasticSearch 插件,使用 Html5 開發,本質上還是一個 nodejs 的工程,因此在使用之前需要先安裝 nodeJs。

3.1、安裝 nodeJs

下載nodeJS

wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.gz

解壓下載包

tar -zxvf node-v10.9.0-linux-x64.tar.gz

移動解壓之后的文件夾到/usr/local

mv node-v10.9.0-linux-x64 /usr/local/nodejs

創建軟鏈接,讓npm和node命令全局生效

ln -s /usr/local/nodejs/bin/node /usr/bin/node
ln -s /usr/local/nodejs/bin/npm /usr/bin/npm

查看nodejs是否安裝成功

node -v
npm -v

圖片圖片

3.2、 安裝 elasticsearch-head

如果未安裝git ,則先安裝git工具

yum install –y git

查看git安裝情況

git --version

圖片圖片

從 gitHub 上拉取 elasticsearch-head 插件代碼

git clone https://github.com/mobz/elasticsearch-head.git

進入elasticsearch-head文件夾

cd elasticsearch-head

因為npm安裝非常非常慢,所以在這里先安裝淘寶源地址,命令如下:

npm install cnpm -g --registry=https://registry.npm.taobao.org

創建cnpm軟鏈接,不然執行下面執行命令會報錯

ln -s /usr/local/nodejs/bin/cnpm /usr/local/bin/cnpm

使用cnpm命令下載安裝項目所需要的插件

cnpm install

大概2分鐘之后就安裝好了,安裝完成之后,修改配置信息

vim _site/app.js

圖片圖片

將localhost換成elasticsearch的服務器地址,小編部署的這臺是197.168.24.207。

圖片圖片

換完之后,在elasticsearch-head目錄下,輸入如下命令,啟動服務

nohup npm run start &

最后,直接遠程通過瀏覽器訪問elasticsearch-head可視化管理界面,默認訪問地址是ip:9100,訪問結果如下!

圖片圖片

至此,elasticsearch的安裝包括可視化界面插件elasticsearch-head已經完成了!

四、SpringBoot 整合 ElasticSearch

對于 SpringBoot 來說,ElasticSearch 其實只是一個中間件,用途在于提供高效的搜索服務,比較幸運的是 SpringBoot 也為我們提供了 ElasticSearch 依賴庫,添加依賴包,通過 JPA 訪問非常方便,整合過程如下!

4.1、創建一個SpringBoot項目

在pom.xml中,添加依賴庫 ElasticSearch 依賴包

<!--jpa 支持-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--elasticsearch-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

在application.properties中添加配置,其中節點名稱cluster-name需要與上面的配置保持一致!

spring.data.elasticsearch.cluster-name=my-es
spring.data.elasticsearch.cluster-nodes=197.168.24.207:9300

4.1、編寫 CURD

我們先寫一個的實體類Student,借助這個實體類來完成基礎的 CRUD 功能。

  • 新增實體類Student,其中indexName表示索引,type表示索引類別
@Data
@Accessors(chain = true)
@Document(indexName = "student", type = "school")
public class Student {

    private static final long serialVersionUID = 1l;

    @Id
    private String id;

    private String name;

    private String gender;

    private Integer age;
}

注意id字段是必須的,可以不寫注解@Id!

  • 使用 JPA 作為數據持久層,接口繼承自ElasticsearchRepository,同時新增兩個自定義查詢方法
public interface StudentRepository extends ElasticsearchRepository<Student, String> {

    /**
     * 通過姓名模擬查詢學生信息
     * @param keyword
     * @return
     */
    List<Student> findByNameLike(String keyword);

    /**
     * 自定義查詢,固定匹配查詢學生信息
     * @param keyword
     * @return
     */
    @Query("{\"match_phrase\":{\"name\":\"?0\"}}")
    List<Student> findByNameCustom(String keyword);
}
  • 創建控制層,編寫基礎的 CRUD 功能
@RestController
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudentRepository studentRepository;

    @Autowired
    private ElasticsearchTemplate elasticsearchTemplate;

    /**
     * 批量添加
     * @param students
     * @return
     */
    @PostMapping("/batchAdd")
    public void add(@RequestBody List<Student> students){
        studentRepository.saveAll(students);
    }

    /**
     * 添加
     * @param student
     * @return
     */
    @PostMapping("/add")
    public void add(@RequestBody Student student){
        studentRepository.save(student);
    }

    /**
     * 修改
     * @param student
     * @return
     */
    @PostMapping("/update")
    public void updateById(@RequestBody Student student){
        studentRepository.save(student);
    }

    /**
     * 刪除
     * @param id
     * @return
     */
    @PostMapping("/delete/{id}")
    public void deleteById(@PathVariable String id){
        studentRepository.deleteById(id);
    }

    /**
     * 獲取所有信息
     * @return
     */
    @GetMapping("/get")
    public Object getAll(){
        Iterable<Student> iterable = studentRepository.findAll();
        List<Student> list = new ArrayList<>();
        iterable.forEach(list :: add);
        return list;
    }

    /**
     * 查詢指定ID
     * @param id
     * @return
     */
    @GetMapping("/get/{id}")
    public Object getById(@PathVariable String id){
        if(StringUtils.isEmpty(id)){
            return Result.error();
        }
        Optional<Student> studentOptional = studentRepository.findById(id);
        if(studentOptional.isPresent()){
            return studentOptional.get();
        }
        return null;
    }


    /**
     * 普通搜索
     * @param keyword
     * @return
     */
    @GetMapping("/search/name")
    public Object searchName(String keyword){
        List<Student> students = studentRepository.findByNameLike(keyword);
        return students;
    }

    /**
     * 自定義匹配
     * 普通搜索
     * @param keyword
     * @return
     */
    @GetMapping("/search/name/custom")
    public Object searchTitleCustom(String keyword){
        List<Student> students = studentRepository.findByNameCustom(keyword);
        return students;
    }

    /**
     * 高級搜索,可以自定義添加搜索字段
     * @param keyword
     * @return
     */
    @GetMapping("/top/search/name")
    public Object topSearchTitle(String keyword){
        SearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(queryStringQuery(keyword))
                .build();
        //使用searchQuery進行搜索
        List<Student> students = elasticsearchTemplate.queryForList(searchQuery, Student.class);
        return students;
    }
}

4.2、CRUD 測試

CRUD 編寫完了,我們驗證一下是否可以正常操作,啟動 springboot 項目,使用 postman 進行測試。

  • 批量新增、新增功能測試

圖片圖片

圖片圖片

執行之后,登錄可視化界面查詢界面,選擇索引student,可以很清晰的看到數據已經進去了

圖片圖片

  • 修改功能測試,修改時需要傳入ID

圖片圖片

將王小賤從26歲修改為30歲,登錄可視化界面查詢數據也已經修改成功!

圖片圖片

  • 刪除功能測試,只需要傳入ID

圖片圖片

刪除李四,登錄可視化界面查詢數據也已經刪除成功!

圖片圖片

  • 查詢功能測試,查詢所有數據

圖片圖片

  • 查詢功能測試,查詢指定ID信息
  • 查詢功能測試,普通模糊查詢,ElasticSearch 會對關鍵詞進行拆分,只要有包含關鍵字的都會查詢出來,例如輸入王張,會將包含王或者張的姓名信息查詢出來

圖片圖片

  • 查詢功能測試,高級查詢,這個是使用官方api提供的查詢入口,可以在方法中進行自定義搜索

圖片圖片

責任編輯:武曉燕 來源: 潘志的研發筆記
相關推薦

2025-07-02 07:33:02

Spring倒排索引分布式

2023-09-01 08:46:44

2022-05-30 07:31:38

SpringBoot搜索技巧

2017-05-19 14:47:24

Spring Boot Elasticsea場景

2025-11-21 08:08:57

2024-06-05 08:14:26

SpringElasticsea人臉數據

2021-12-27 09:59:57

SpringCanal 中間件

2024-03-26 08:08:08

SpringBPMN模型

2017-04-17 10:35:40

Spring BooRedis 操作

2025-04-14 05:00:00

2024-11-04 08:02:23

SpringRabbitMQ中間件

2024-08-13 10:36:25

SpringScrew數據庫

2025-03-26 03:25:00

SpringGuavaCaffeine

2024-01-30 08:01:15

RabbitMQ業務邏輯應用場景

2025-06-26 04:00:00

Spring數據綁定技術

2025-02-21 16:00:00

SpringBoot代碼開發

2022-01-04 19:15:33

ElasticsearSpring BootLogstash

2024-10-30 08:05:01

Spring參數電子簽章

2016-03-04 10:50:02

ios圓角高效添加

2022-12-23 08:28:42

策略模式算法
點贊
收藏

51CTO技術棧公眾號

日韩av不卡在线观看| 蜜桃麻豆影像在线观看| 国内精品美女在线观看 | 亚洲精品欧美一区二区三区| 中文字幕在线观看的网站| 日本电影在线观看网站| 亚洲尤物精选| 日韩欧美国产综合一区| 奇米影视首页 狠狠色丁香婷婷久久综合 | 久久精品道一区二区三区| 欧美成人官网二区| 国产精品99久久久久久大便| 秋霞av一区二区三区| 九色丨蝌蚪丨成人| 亚洲卡通欧美制服中文| 91精品久久久久久久久久另类 | 日韩精品一区二区三区视频播放| 亚洲欧洲日韩精品| 波多野结衣毛片| 亚洲第一二三区| 亚洲一区二区三区视频在线| 亚洲最大的成人网| 亚洲波多野结衣| 亚洲国产精选| 国产精品私人影院| 国产精品直播网红| 91免费在线看片| 欧美日韩尤物久久| 国产视频一区二区在线观看| 日本道色综合久久影院| 最近中文字幕无免费| 91丝袜在线| 成人黄色小视频在线观看| 色综合视频网站| 日批视频在线看| dy888亚洲精品一区二区三区| 精品写真视频在线观看 | 国产精品久久久久久亚洲色| 黄色在线看片| 成人一级片在线观看| 欧美激情国产高清| 在线视频 日韩| 三妻四妾的电影电视剧在线观看| 91在线国内视频| 日本91av在线播放| 香蕉久久久久久久| 二区三区精品| 亚洲影视在线观看| 麻豆av一区二区三区久久| 精品国产午夜福利| 久久久久久久久久久妇女| 日韩一区二区电影| 男女猛烈激情xx00免费视频| 视频一区二区在线播放| 蜜臀久久99精品久久久画质超高清| 在线观看欧美www| 免费黄频在线观看| 丁香花在线影院| 久久久国产精品麻豆| 国产精品丝袜高跟| 久久久综合久久| 你懂的一区二区三区| 欧美日韩大陆一区二区| 免费在线看黄色片| 成人高清免费在线播放| 国产精品亚洲第一区在线暖暖韩国| 欧美成年人在线观看| 国产一级二级在线观看| 欧美在线一级| 精品国产91久久久久久老师| 亚洲欧洲精品在线观看| 日本黄视频在线观看| 日日夜夜精品视频免费| 久久99亚洲精品| 无码人妻精品一区二区中文| 精品国产亚洲一区二区三区大结局 | 国产伊人精品在线| www.99re7.com| 精品日韩一区| 亚洲国产欧美自拍| 天天做天天干天天操| 日韩欧美一中文字暮专区| 亚洲免费色视频| 欧美在线3区| 亚洲精品综合网| 麻豆一区二区在线| 欧美一区三区三区高中清蜜桃| 免费成年人视频在线观看| 日韩精品福利一区二区三区| 91精品国产黑色紧身裤美女| 欧美性猛交久久久乱大交小说| 色婷婷在线播放| 国产精品美女久久福利网站| 欧美一区亚洲二区| 西西人体44www大胆无码| 国产一区二区三区精品视频| 国产精品福利无圣光在线一区| 中日韩精品视频在线观看| 欧美一区在线看| 在线午夜精品自拍| av黄色免费网站| 91久久精品无嫩草影院| 欧美电影一区二区三区| 无码人妻精品一区二区三区66| 麻豆av在线免费观看| 自拍偷自拍亚洲精品播放| 日韩免费一区二区三区| 色猫av在线| eeuss国产一区二区三区| 亚洲va久久久噜噜噜久久天堂| 在线免费a视频| 麻豆精品精品国产自在97香蕉| 国产成人一区二| 伊人久久久久久久久久久久| 久久久久99| 国产精品美女免费看| 中文字幕码精品视频网站| 日本三级亚洲精品| 国产精品视频区| 国产露脸91国语对白| 精品亚洲国内自在自线福利| 成人免费福利视频| 精品国产999久久久免费| 国产精品456| 国产精品国模大尺度私拍| 成人午夜免费在线观看| 99久久综合精品| 欧美久久电影| 午夜免费视频在线国产| 亚洲三级理论片| 久久久久久av无码免费网站下载| 麻豆av在线播放| 欧美小视频在线观看| 欧美少妇性生活视频| 欧美综合影院| 亚洲成人动漫在线播放| 黄色片视频免费观看| 亚洲福利网站| 亚洲人成电影在线观看天堂色| 少妇一级淫免费观看| 久久狠狠久久| 亚洲欧洲中文天堂| 美国黑人一级大黄| 图片区亚洲欧美小说区| 欧美成人精品在线| 劲爆欧美第一页| 禁久久精品乱码| 77777亚洲午夜久久多人| 美日韩一二三区| 日产欧产美韩系列久久99| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 无码人妻精品一区二区三区9厂| 久久高清国产| 日韩av男人的天堂| 中文在线字幕免费观| 久久成人免费电影| 国产精品久久久一区二区三区| 欧美一区,二区| 久久综合九色综合欧美亚洲| 麻豆视频成人| 免费观看久久久久| 亚洲1区2区3区视频| 久久久噜噜噜www成人网| 日韩三区免费| 91精品国产91久久久久久最新毛片 | av电影在线观看网址| 最新国产成人在线观看| av一区二区三区免费观看| 高端美女服务在线视频播放| 欧美视频中文字幕在线| 制服丝袜综合网| 一区二区三区免费在线看| 亚洲成人黄色在线| 久久av红桃一区二区禁漫| 雨宫琴音一区二区在线| 国产成人一区二区三区电影| 国产男男gay网站| 99久久99久久综合| 亚洲三区四区| 丝袜中文在线| 欧美视频在线一区二区三区| 免费不卡的av| 综合色就爱涩涩涩综合婷婷| 超碰91人人草人人干| 狠狠躁夜夜躁人人爽天天高潮| 欧美a级理论片| 国产精品初高中精品久久| 国产精品久久久久一区二区国产 | 亚洲最大免费| 18video性欧美19sex高清| 欧美日韩日日骚| 免费看黄色aaaaaa 片| 亚洲色图国产| 日韩av三级在线观看| 国产成人三级一区二区在线观看一 | 精品视频久久久| 91杏吧porn蝌蚪| 日本欧洲一区二区| 欧美lavv| 1024在线看片你懂得| 欧美一区二区三区色| 91中文字幕永久在线| 最新日韩欧美| 亚洲综合一区二区不卡| 在线观看a视频| 狠狠躁夜夜躁人人躁婷婷91| 国产免费中文字幕| 日韩中文在线电影| 国产成人亚洲精品| 色网站在线免费观看| 亚洲成人免费观看| 久久久无码人妻精品无码| 一区二区三区午夜探花| 国产美女精品免费电影| 成人jjav| 日本精品一级二级| 91国模少妇一区二区三区| 国产精品扒开腿做爽爽爽软件| 亚洲一区二区三区四区视频| 在线观看a视频| 欧美午夜影院一区| 最近中文字幕在线mv视频在线| 99精品国产福利在线观看免费 | 在线视频成人| 久久亚洲精品小早川怜子66| 中文字幕久久网| 国产精品国产三级国产aⅴ中文 | 日日摸夜夜添夜夜添亚洲女人| 精品国产_亚洲人成在线| 国产精品蜜臀| 日韩丝袜美女视频| 日韩欧美激情视频| 99re视频精品| www.浪潮av.com| 欧美在线导航| 欧美一区二区色| 国产精品四虎| 精品视频在线看| 婷婷国产成人精品视频| 国产激情精品久久久第一区二区 | 中文av免费观看| 国产日韩影视精品| 15—17女人毛片| 亚州av乱码久久精品蜜桃| 亚洲一区中文字幕| 日本欧美电影在线观看| 亚洲精品ady| 日韩国产成人在线| 国产精品国产三级国产有无不卡 | 国产精品国产三级国产普通话对白 | 少妇人妻精品一区二区三区| 日韩欧美精品中文字幕| 精品人妻中文无码av在线| 免费视频一区二区| www.国产亚洲| 久久99视频| 国产一区视频在线播放| 丝袜综合欧美| 亚洲欧美激情四射在线日| 国产美女www| 亚洲男女毛片无遮挡| 亚洲欧美一区二区三区不卡| 在线综合欧美| 中文字幕一区二区三区有限公司 | 中文字幕在线直播| 亚洲一区二区久久久| 国产精品久久久久久免费播放| 亚洲影院久久精品| 欧美亚一区二区三区| 精品伊人久久久久7777人| 无码熟妇人妻av在线电影| 久久av免费| 成人av蜜桃| 日韩av首页| 欧美激情在线一区| 成人免费在线观看| 亚洲福利在线看| 中文字幕免费视频观看| 亚洲自拍偷拍欧美| 午夜精产品一区二区在线观看的| 国产美女久久久久| 大肉大捧一进一出好爽动态图| 影音先锋成人在线电影| 日本不卡一区二区三区在线观看| 韩国一区二区三区视频| 国产精品久久二区| 日韩特级毛片| 在线亚洲欧美视频| 亚洲欧美综合一区二区| 欧美日韩国产乱码电影| 9i看片成人免费看片| 依依成人精品视频| 国产午夜福利一区| 99国产精品一区| 性久久久久久久久久久久久久| 久久精品伊人| 亚洲黄色网址在线观看| 91亚洲一区| 日韩精品久久一区二区三区| 国产一区二区三区亚洲| 国产美女久久久| 日韩欧美一区二区三区免费观看| 久久久亚洲成人| av片在线观看网站| 久久精品国产一区| 亚洲1卡2卡3卡4卡乱码精品| 亚洲欧美国产日韩天堂区| 欧美一区二区三区黄片 | 91麻豆成人精品国产| 91电影在线观看| 国产精品久久久久久久久久久久久久久久久 | 韩国三级在线看| 精品一区二区av| 9久久婷婷国产综合精品性色| 另类图片国产| av7777777| 99国产精品久久久久久久| www.好吊操| 亚洲欧美综合国产精品一区| 亚洲av首页在线| 亚洲综合小说| 婷婷视频在线播放| 国产韩国精品一区二区三区| 亚洲综合网中心| 久久一区二区中文字幕| 最新欧美日韩亚洲| 亚洲国产精品成人| 亚洲成人动漫在线| 亚洲精品在线观看91| 三年中国中文在线观看免费播放| 欧美xxxxx视频| 欧美性受xxxx黑人猛交88| 国产精品大片免费观看| www污在线观看| 亚洲乱亚洲高清| 伊人成色综合网| 蜜桃av综合| 久久精品视频91| 久久国产剧场电影| 两性午夜免费视频| 国产91精品精华液一区二区三区| 中国男女全黄大片| 波多野结衣视频一区| 亚洲天堂美女视频| 91老师国产黑色丝袜在线| 免费污网站在线观看| 国产精品免费aⅴ片在线观看| 成人免费毛片糖心| 中文一区二区在线观看| 女人18毛片毛片毛片毛片区二| 亚洲品质自拍视频网站| 欧美一级高潮片| 欧美日韩中文字幕日韩欧美| 亚洲综合久久网| 精品视频在线看| 后入内射欧美99二区视频| 日韩av在线影院| 国产精品无码2021在线观看| 久久精品国产一区| yellow字幕网在线| 国产福利视频一区| 国产精品成人3p一区二区三区| 91牛牛免费视频| 97久久超碰| 色一情一乱一伦一区二区三区 | 自拍偷拍亚洲色图欧美| 欧美日韩一视频区二区| 69堂免费视频| 久久草av在线| 亚洲国产无码精品| 亚洲人成电影网站色mp4| 久久久免费高清视频| 欧美日韩成人综合天天影院 | 国产精品久久久av久久久| 国产精品1区在线| 国产女主播一区二区| 91日韩视频| 激情六月丁香婷婷| 国产精品亚洲第一区在线暖暖韩国| 中国毛片在线观看| 亚洲国产精品一区二区久久恐怖片 | 中文字幕日本在线| 97视频在线观看网址| 国产精品久久久久久久久久辛辛| 国产乱码精品一区二区三区中文| 久久一区91| www.爱色av.com| 国产美女精品一区二区三区| 国产美女精品久久| 亚洲一区二区三区四区五区中文| 高潮毛片又色又爽免费| 欧美精品粉嫩高潮一区二区| 日本午夜在线| 美女扒开尿口让男人操亚洲视频网站| 中文字幕在线高清| 国产传媒一区二区| 久久精品青草| 欧美伦理片在线观看| 久久综合九色综合97婷婷女人| 麻豆亚洲av成人无码久久精品|