成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > golang elasticsearch Client的使用詳解

golang elasticsearch Client的使用詳解

熱門標(biāo)簽:阿克蘇地圖標(biāo)注 評(píng)價(jià)高的400電話辦理 涿州代理外呼系統(tǒng) 外呼系統(tǒng)顯本地手機(jī)號(hào) 電話機(jī)器人軟件免費(fèi) 壽光微信地圖標(biāo)注 excel地圖標(biāo)注分布數(shù)據(jù) 外呼系統(tǒng)用什么卡 百度地圖標(biāo)注后傳給手機(jī)

elasticsearch 的client ,通過 NewClient 建立連接,通過 NewClient 中的 Set.URL設(shè)置訪問的地址,SetSniff設(shè)置集群

獲得連接 后,通過 Index 方法插入數(shù)據(jù),插入后可以通過 Get 方法獲得數(shù)據(jù)(最后的測(cè)試用例中會(huì)使用 elasticsearch client 的Get 方法)

func Save(item interface{}) {
    client, err := elastic.NewClient(
  elastic.SetURL("http://192.168.174.128:9200/"),
  // Must turn off sniff in docker
  elastic.SetSniff(false),
 )
 
 if err != nil {
  panic(err)
 }
 
 resp, err := client.Index().
  Index("dating_profile").
  Type("zhenai").
  BodyJson(item).
  Do(context.Background()) //contex需要context 包
 if err != nil {
  panic(err)
 }
 
 fmt.Printf("%+v", resp)
 
}

測(cè)試程序,自行定義一個(gè)數(shù)據(jù)結(jié)構(gòu) Profile 進(jìn)行測(cè)試

func TestSave(t *testing.T) {
 profile := model.Profile{
  Age:        34,
  Height:     162,
  Weight:     57,
  Income:     "3001-5000元",
  Gender:     "女",
  Name:       "安靜的雪",
  XingZuo:    "牡羊座",
  Occupation: "人事/行政",
  Marriage:   "離異",
  House:      "已購房",
  Hukou:      "山東菏澤",
  Education:  "大學(xué)本科",
  Car:        "未購車",
 }
 
 Save(profile)
}

go test 成功

通過 Get 方法查看數(shù)據(jù)是否存在elasticsearch 中

我們?cè)趖est中panic,在函數(shù)中講錯(cuò)誤返回。在從elastisearch中 取出存入的數(shù)據(jù),與我們定義的數(shù)據(jù)進(jìn)行比較,

所以save中需要將插入數(shù)據(jù)的Id返回出來

func Save(item interface{}) (id string, err error) {
	client, err := elastic.NewClient(
		elastic.SetURL("http://192.168.174.128:9200/"),
		// Must turn off sniff in docker
		elastic.SetSniff(false),
	)
 
	if err != nil {
		return "", err
	}
 
	resp, err := client.Index().
		Index("dating_profile").
		Type("zhenai").
		BodyJson(item).
		Do(context.Background())
	if err != nil {
		return "", err
	}
 
	return resp.Id, nil
 
}

測(cè)試用例

package persist
 
import (
	"context"
	"encoding/json"
	"my_crawler_single/model"
	"testing"
 
	elastic "gopkg.in/olivere/elastic.v5"
)
 
func TestSave(t *testing.T) {
	expected := model.Profile{
		Age:        34,
		Height:     162,
		Weight:     57,
		Income:     "3001-5000元",
		Gender:     "女",
		Name:       "安靜的雪",
		XingZuo:    "牡羊座",
		Occupation: "人事/行政",
		Marriage:   "離異",
		House:      "已購房",
		Hukou:      "山東菏澤",
		Education:  "大學(xué)本科",
		Car:        "未購車",
	}
 
	id, err := Save(expected)
	if err != nil {
		panic(err)
	}
 
	client, err := elastic.NewClient(
		elastic.SetURL("http://192.168.174.128:9200/"),
		elastic.SetSniff(false),
	)
	if err != nil {
		panic(err)
	}
 
	resp, err := client.Get().
		Index("dating_profile").
		Type("zhenai").
		Id(id). //查找指定id的那一條數(shù)據(jù)
		Do(context.Background())
	if err != nil {
		panic(err)
	}
 
	t.Logf("%+v", resp)
	//從打印得知,數(shù)據(jù)在resp.Source中,從rest client的截圖也可以知道
 
	var actual model.Profile
	//查看 *resp.Source 可知其數(shù)據(jù)類型為[]byte
	err = json.Unmarshal(*resp.Source, actual)
	if err != nil {
		panic(err)
	}
 
	if actual != expected {
		t.Errorf("got %v;expected %v", actual, expected)
	}
}

補(bǔ)充:go-elasticsearch: Elastic官方的Go語言客戶端

說明

Elastic官方鼓勵(lì)在項(xiàng)目中嘗試用這個(gè)包,但請(qǐng)記住以下幾點(diǎn):

這個(gè)項(xiàng)目的工作還在進(jìn)行中,并非所有計(jì)劃的功能和Elasticsearch官方客戶端中的標(biāo)準(zhǔn)(故障重試,節(jié)點(diǎn)自動(dòng)發(fā)現(xiàn)等)都實(shí)現(xiàn)了。

API穩(wěn)定性無法保證。 盡管公共API的設(shè)計(jì)非常謹(jǐn)慎,但它們可以根據(jù)進(jìn)一步的探索和用戶反饋以不兼容的方式進(jìn)行更改。

客戶端的目標(biāo)是Elasticsearch 7.x版本。后續(xù)將添加對(duì)6.x和5.x版本API的支持。

安裝

用go get安裝這個(gè)包:

go get -u github.com/elastic/go-elasticsearch

或者將這個(gè)包添加到go.mod文件:

require github.com/elastic/go-elasticsearch v0.0.0

或者克隆這個(gè)倉庫:

git clone https://github.com/elastic/go-elasticsearch.git \u0026\u0026 cd go-elasticsearch

一個(gè)完整的示例:

mkdir my-elasticsearch-app \u0026\u0026 cd my-elasticsearch-appcat \u0026gt; go.mod \u0026lt;\u0026lt;-END  module my-elasticsearch-app  require github.com/elastic/go-elasticsearch v0.0.0ENDcat \u0026gt; main.go \u0026lt;\u0026lt;-END  package main  import (    \u0026quot;log\u0026quot;    \u0026quot;github.com/elastic/go-elasticsearch\u0026quot;  )  func main() {    es, _ := elasticsearch.NewDefaultClient()    log.Println(es.Info())  }ENDgo run main.go

用法

elasticsearch包與另外兩個(gè)包綁定在一起,esapi用于調(diào)用Elasticsearch的API,estransport通過HTTP傳輸數(shù)據(jù)。

使用elasticsearch.NewDefaultClient()函數(shù)創(chuàng)建帶有以下默認(rèn)設(shè)置的客戶端:

es, err := elasticsearch.NewDefaultClient()if err != nil {  log.Fatalf(\u0026quot;Error creating the client: %s\u0026quot;, err)}res, err := es.Info()if err != nil {  log.Fatalf(\u0026quot;Error getting response: %s\u0026quot;, err)}log.Println(res)// [200 OK] {//   \u0026quot;name\u0026quot; : \u0026quot;node-1\u0026quot;,//   \u0026quot;cluster_name\u0026quot; : \u0026quot;go-elasticsearch\u0026quot;// ...

注意:當(dāng)導(dǎo)出ELASTICSEARCH_URL環(huán)境變量時(shí),它將被用作集群端點(diǎn)。

使用elasticsearch.NewClient()函數(shù)(僅用作演示)配置該客戶端:

cfg := elasticsearch.Config{  Addresses: []string{    \u0026quot;http://localhost:9200\u0026quot;,    \u0026quot;http://localhost:9201\u0026quot;,  },  Transport: \u0026http.Transport{    MaxIdleConnsPerHost:   10,    ResponseHeaderTimeout: time.Second,    DialContext:           (\u0026net.Dialer{Timeout: time.Second}).DialContext,    TLSClientConfig: \u0026tls.Config{      MaxVersion:         tls.VersionTLS11,      InsecureSkipVerify: true,    },  },}es, err := elasticsearch.NewClient(cfg)// ...

下面的示例展示了更復(fù)雜的用法。它從集群中獲取Elasticsearch版本,同時(shí)索引幾個(gè)文檔,并使用響應(yīng)主體周圍的一個(gè)輕量包裝器打印搜索結(jié)果。

// $ go run _examples/main.gopackage mainimport (  \u0026quot;context\u0026quot;  \u0026quot;encoding/json\u0026quot;  \u0026quot;log\u0026quot;  \u0026quot;strconv\u0026quot;  \u0026quot;strings\u0026quot;  \u0026quot;sync\u0026quot;  \u0026quot;github.com/elastic/go-elasticsearch\u0026quot;  \u0026quot;github.com/elastic/go-elasticsearch/esapi\u0026quot;)func main() {  log.SetFlags(0)  var (    r  map[string]interface{}    wg sync.WaitGroup  )  // Initialize a client with the default settings.  //  // An `ELASTICSEARCH_URL` environment variable will be used when exported.  //  es, err := elasticsearch.NewDefaultClient()  if err != nil {    log.Fatalf(\u0026quot;Error creating the client: %s\u0026quot;, err)  }  // 1. Get cluster info  //  res, err := es.Info()  if err != nil {    log.Fatalf(\u0026quot;Error getting response: %s\u0026quot;, err)  }  // Deserialize the response into a map.  if err := json.NewDecoder(res.Body).Decode(\u0026r); err != nil {    log.Fatalf(\u0026quot;Error parsing the response body: %s\u0026quot;, err)  }  // Print version number.  log.Printf(\u0026quot;~~~~~~~\u0026gt; Elasticsearch %s\u0026quot;, r[\u0026quot;version\u0026quot;].(map[string]interface{})[\u0026quot;number\u0026quot;])  // 2. Index documents concurrently  //  for i, title := range []string{\u0026quot;Test One\u0026quot;, \u0026quot;Test Two\u0026quot;} {    wg.Add(1)    go func(i int, title string) {      defer wg.Done()      // Set up the request object directly.      req := esapi.IndexRequest{        Index:      \u0026quot;test\u0026quot;,        DocumentID: strconv.Itoa(i + 1),        Body:       strings.NewReader(`{\u0026quot;title\u0026quot; : \u0026quot;` + title + `\u0026quot;}`),        Refresh:    \u0026quot;true\u0026quot;,      }      // Perform the request with the client.      res, err := req.Do(context.Background(), es)      if err != nil {        log.Fatalf(\u0026quot;Error getting response: %s\u0026quot;, err)      }      defer res.Body.Close()      if res.IsError() {        log.Printf(\u0026quot;[%s] Error indexing document ID=%d\u0026quot;, res.Status(), i+1)      } else {        // Deserialize the response into a map.        var r map[string]interface{}        if err := json.NewDecoder(res.Body).Decode(\u0026r); err != nil {          log.Printf(\u0026quot;Error parsing the response body: %s\u0026quot;, err)        } else {          // Print the response status and indexed document version.          log.Printf(\u0026quot;[%s] %s; version=%d\u0026quot;, res.Status(), r[\u0026quot;result\u0026quot;], int(r[\u0026quot;_version\u0026quot;].(float64)))        }      }    }(i, title)  }  wg.Wait()  log.Println(strings.Repeat(\u0026quot;-\u0026quot;, 37))  // 3. Search for the indexed documents  //  // Use the helper methods of the client.  res, err = es.Search(    es.Search.WithContext(context.Background()),    es.Search.WithIndex(\u0026quot;test\u0026quot;),    es.Search.WithBody(strings.NewReader(`{\u0026quot;query\u0026quot; : { \u0026quot;match\u0026quot; : { \u0026quot;title\u0026quot; : \u0026quot;test\u0026quot; } }}`)),    es.Search.WithTrackTotalHits(true),    es.Search.WithPretty(),  )  if err != nil {    log.Fatalf(\u0026quot;ERROR: %s\u0026quot;, err)  }  defer res.Body.Close()  if res.IsError() {    var e map[string]interface{}    if err := json.NewDecoder(res.Body).Decode(\u0026e); err != nil {      log.Fatalf(\u0026quot;error parsing the response body: %s\u0026quot;, err)    } else {      // Print the response status and error information.      log.Fatalf(\u0026quot;[%s] %s: %s\u0026quot;,        res.Status(),        e[\u0026quot;error\u0026quot;].(map[string]interface{})[\u0026quot;type\u0026quot;],        e[\u0026quot;error\u0026quot;].(map[string]interface{})[\u0026quot;reason\u0026quot;],      )    }  }  if err := json.NewDecoder(res.Body).Decode(\u0026r); err != nil {    log.Fatalf(\u0026quot;Error parsing the response body: %s\u0026quot;, err)  }  // Print the response status, number of results, and request duration.  log.Printf(    \u0026quot;[%s] %d hits; took: %dms\u0026quot;,    res.Status(),    int(r[\u0026quot;hits\u0026quot;].(map[string]interface{})[\u0026quot;total\u0026quot;].(map[string]interface{})[\u0026quot;value\u0026quot;].(float64)),    int(r[\u0026quot;took\u0026quot;].(float64)),  )  // Print the ID and document source for each hit.  for _, hit := range r[\u0026quot;hits\u0026quot;].(map[string]interface{})[\u0026quot;hits\u0026quot;].([]interface{}) {    log.Printf(\u0026quot; * ID=%s, %s\u0026quot;, hit.(map[string]interface{})[\u0026quot;_id\u0026quot;], hit.(map[string]interface{})[\u0026quot;_source\u0026quot;])  }  log.Println(strings.Repeat(\u0026quot;=\u0026quot;, 37))}// ~~~~~~~\u0026gt; Elasticsearch 7.0.0-SNAPSHOT// [200 OK] updated; version=1// [200 OK] updated; version=1// -------------------------------------// [200 OK] 2 hits; took: 7ms//  * ID=1, map[title:Test One]//  * ID=2, map[title:Test Two]// =====================================

如上述示例所示,esapi包允許通過兩種不同的方式調(diào)用Elasticsearch API:通過創(chuàng)建結(jié)構(gòu)(如IndexRequest),并向其傳遞上下文和客戶端來調(diào)用其Do()方法,或者通過客戶端上可用的函數(shù)(如WithIndex())直接調(diào)用其上的Search()函數(shù)。更多信息請(qǐng)參閱包文檔。

estransport包處理與Elasticsearch之間的數(shù)據(jù)傳輸。 目前,這個(gè)實(shí)現(xiàn)只占據(jù)很小的空間:它只在已配置的集群端點(diǎn)上進(jìn)行循環(huán)。后續(xù)將添加更多功能:重試失敗的請(qǐng)求,忽略某些狀態(tài)代碼,自動(dòng)發(fā)現(xiàn)群集中的節(jié)點(diǎn)等等。

Examples

_examples文件夾包含許多全面的示例,可幫助你上手使用客戶端,包括客戶端的配置和自定義,模擬單元測(cè)試的傳輸,將客戶端嵌入自定義類型,構(gòu)建查詢,執(zhí)行請(qǐng)求和解析回應(yīng)。

許可證

遵循Apache License 2.0版本。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Django對(duì)接elasticsearch實(shí)現(xiàn)全文檢索的示例代碼
  • Django利用elasticsearch(搜索引擎)實(shí)現(xiàn)搜索功能
  • golang操作elasticsearch的實(shí)現(xiàn)
  • Django項(xiàng)目之Elasticsearch搜索引擎的實(shí)例
  • django使用haystack調(diào)用Elasticsearch實(shí)現(xiàn)索引搜索
  • Go語言Elasticsearch數(shù)據(jù)清理工具思路詳解

標(biāo)簽:梅河口 雞西 吐魯番 銅川 重慶 蘭州 汕頭 欽州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang elasticsearch Client的使用詳解》,本文關(guān)鍵詞  golang,elasticsearch,Client,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang elasticsearch Client的使用詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang elasticsearch Client的使用詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美亚洲国产激情| 国产精品三p一区二区| 少妇性饥渴无码a区免费| www.四虎精品| 亚洲制服国产| 亚洲欧美精品中文第三| 国产精品男女猛烈高潮激情| 成人免费毛片日本片视频| 国产一区二区三区视频免费观看| 91久久久久久久久久久久| 中文字幕欧美国产| 欧美二区在线播放| 亚洲已满18点击进入久久| 亚洲熟妇av乱码在线观看| 九九久久九九| 久久久蜜桃一区二区人| 激情丁香综合五月| 先锋影音资源999| 欧美在线观看视频免费| 国产黄色免费网站| 欧美第一视频| 日本在线中文字幕一区| 亚洲一级片在线播放| 久久aⅴ国产欧美74aaa| 日韩毛片在线免费看| 成人在线免费观看视频| 啦啦啦在线视频免费观看高清中文| 精品久久在线| 久久国产精品露脸对白| 国产乱肥老妇国产一区二| 亚洲成人动漫一区| 欧美美女一区二区在线观看| 日韩激情文学| 九9re精品视频在线观看re6| 欧美lavv| 国产中文欧美日韩在线| 亚洲欧洲成人在线| 久久精品国产亚洲AV无码麻豆| 99超碰麻豆| 精品久久久中文字幕人妻| 四虎国产精品永远| a毛片在线免费观看| 九色视频成人自拍| 一级毛片在线播放| 精品日产免费二区日产免费二区| 乱人伦中文字幕在线zone| 国产日韩在线免费观看| 青青草97国产精品免费观看无弹窗版| 在线一区二区三区做爰视频网站| 亚洲黄色在线| 天天躁日日躁aaaa视频| 在线观看欧美一区二区| 久久女同性恋中文字幕| 日韩高清第一页| 水蜜桃一区二区三区| 老司机在线免费视频| 日韩在线一卡二卡| 国产成人激情av| 亚洲日韩色图| 国产精品美女一区二区三区四区| 亚洲熟女少妇一区二区| 亚洲人成网站在线在线观看| 亚洲人成绝费网站色www| 精品中文字幕一区| 亚洲人在线视频| 二区三区偷拍浴室洗澡视频| 中文字幕一区二区人妻视频| 国内精品中文字幕| 欧洲美女7788成人免费视频| 免费精品99久久国产综合精品| 国产成人久久久精品一区| 久久精品国产清自在天天线| 色妞在线综合亚洲欧美| 九色porny自拍视频在线观看| 中文在线天堂网www| 久久精品视频一区| 国产成人精品免费看在线播放| 制服丝袜av成人在线看| 欧美国产在线电影| 欧美久久一区二区三区| 欧美视频在线免费播放| 精品一区二区在线免费观看| 琪琪一区二区三区| 手机在线观看av| 欧美日韩一区二区欧美激情| 日韩中文一区二区| 成人av动漫| 超污网站在线观看| 人人妻人人爽人人澡人人精品| 亚洲午夜精品久久久久久人妖| 国产精品一品二区三区的使用体验| 人人狠狠综合久久亚洲婷婷| 国产成人午夜片在线观看高清观看| 精品一区免费| 国产欧美日韩网站| 91精品国产闺蜜国产在线闺蜜| 另类av导航| 久久久久久久国产精品视频| 欧美日韩一区二区区别是什么| 久久久久久久久久久久国产| 色哟哟在线观看一区二区三区| 欧美乱做爰xxxⅹ久久久| 黄色免费在线观看网站| 欧美人与禽zozo性伦| 在线国产视频观看| 99久热在线精品视频| 国产视频丨精品|在线观看| 天堂在线中文| 国产91在线|亚洲| 西西人体一区二区| 91亚洲精品在线观看| 美女爆乳18禁www久久久久久| 淫视频在线观看| 91亚洲精品一区二区| 中文字幕资源网在线观看| 在线观看国产精品视频| 肥熟一91porny丨九色丨| 99久久精品费精品国产| 美国黄色特级片| 精品无码av无码免费专区| 在线观看免费观看在线| 午夜精品一区二区三区在线| 熟妇高潮一区二区高潮| xfplay精品久久| 欧洲一区在线观看| а√天堂官网中文在线| 免费观看污网站| 韩日av一区二区| 亚洲成人av动漫| av男人天堂网| 天堂一区二区在线免费观看| 91白丝在线| 黄色在线网站| 国产盗摄精品一区二区酒店| 日韩精品一区二区不卡| 欧美码中文字幕在线| 成人午夜视频在线观看免费| 久久高清精品| 国产成人无码av| 我不卡手机影院| 五十路熟女丰满大屁股| 国产成人艳妇aa视频在线| 制服丝袜第二页| 欧美成人家庭影院| 亚洲永久一区二区三区在线| 国产福利a级| 国产欧美综合精品一区二区| 日韩一级二级三级精品视频| 国产精品第2页| 欧美蜜桃一区二区三区| 扒开伸进免费视频| 麻豆系列在线观看| 久久精品亚洲乱码伦伦中文| 母乳一区在线观看| 国产无遮挡裸体免费久久| 成人三级伦理片| 中文字幕一区二区日韩精品绯色| 国产电影一区二区在线观看| 亚洲午夜国产一区99re久久| 成 人 黄 色 小说网站 s色| 青青草免费观看免费视频在线| av成人综合网| 亚洲日本在线看| 欧美bbbbxxxx| av免费中文字幕| 一起操在线播放| 国产91在线高潮白浆在线观看| 在线日韩影院| 久久久精品网| 久久久久中文字幕| 亚洲日本japanese丝袜| 天天摸天天干| 免费在线观看一级片| 亚洲久久成人| 日本三级中国三级99人妇网站| 欧美xxx视频| 91麻豆精品国产91久久久使用方法| 男女做爰猛烈刺激| 91免费版网站入口| 欧美xxx黑人xxx水蜜桃| 91探花福利精品国产自产在线| 中文无码精品一区二区三区| 色呦呦网站在线观看| 精品国产视频| 亚洲精品成人免费| 国产啪精品视频网站| 亚洲欧美日韩一区成人| 成人国产精品色哟哟| 日韩福利视频一区| 欧美国产一区二区在线观看| 污污网站免费看| 亚洲免费av网址| 国产又爽又黄免费软件| 国产在线高清视频| 亚洲成年人网站在线观看| 成人一级视频| 日韩一区二区不卡| 久久婷婷亚洲| 97成人精品区在线播放| 日韩电影大全在线观看| 九九免费精品视频在线观看| 国产日韩综合| 噜噜爱69成人精品| 顶级嫩模精品视频在线看| 日本成人手机在线| xxxxxx黄色| 精品日本一区二区三区在线观看| 亚洲午夜免费电影| 欧美艾v福利视频在线观看| 国产乱淫av片| 日韩av一级大片| 91精品国产91久久久久久| 国产一区二区三区视频免费| 日韩视频免费观看高清完整版| 日批免费在线观看| 欧美大片aaaa| 亚洲精品97久久中文字幕无码| 中文字幕高清在线播放| 黄色网址在线免费播放| 久久成人综合视频| 国产精品.www| 四色成人av永久网址| 高清性色生活片在线观看| 日本女人性视频| 香蕉加勒比综合久久| 国产1区2区| 国产一区二区av| 人妻精品一区一区三区蜜桃91| 久久99国产精品久久99果冻传媒| 免费三片在线播放| 成人黄页网站视频| 欧美不卡福利| 欧美一级爽aaaaa大片| 在线免费看污| 亚洲欧美在线x视频| 国产精品嫩草影院俄罗斯| 日韩1区2区日韩1区2区| 一二区成人影院电影网| 日韩在线观看www| 91动漫在线看| 最近2018年手机中文在线| 色综合天天视频在线观看| 欧美男男gaytwinkfreevideos| 在线免费色视频| 欧美孕妇与黑人巨交| 成人午夜激情影院| 久久99久久久久久| 亚洲制服av| 免费看av在线| 亚洲2020天天堂在线观看| 91嫩草国产在线观看| 国产毛片久久久久久国产毛片| 波多野结衣在线aⅴ中文字幕不卡| 中文字幕一区二区三区四| 欧美国产日本高清在线| 久青草视频在线播放| aa片在线观看视频在线播放| free极度另类性欧美| 日韩在线第三页| 欧美激情一级二级| 最近免费中文字幕大全免费第三页| 欧美成人在线免费| 国产精品美女呻吟| 精品一区久久久久久| 国产精品美女一区二区视频| proumb性欧美在线观看| 99se婷婷在线视频观看| 一区在线免费观看| 蜜桃传媒九九九| 91欧美日韩在线| 国产午夜精品久久久久久久| 亚洲视频网站在线观看| 天天操夜夜拍| 欧美日韩一区二区区| 成人国产一区二区三区精品| 在线观看亚洲a| 欧美1o一11sex性hdhd| 欧美午夜aaaaaa免费视频| 美女视频一区| 一本色道久久综合狠狠躁篇怎么玩| 丰满少妇在线观看资源站| 国产亚洲一区二区手机在线观看| 91老司机福利在线| 香蕉影院在线观看| 日韩av影视大全| 亚洲精品午夜精品| 国产成人精品一区二三区| 欧美国产乱视频| 国产一区二区三区三区在线观看| av电影成人| 欧美久久一二三四区| 国产高潮流白浆喷水视频| 乳色吐息在线观看| 中文娱乐网av| 免费在线观看国产精品| 国产精品一区二区久激情瑜伽| 欧美性猛交xx乱大交| 91精品国产麻豆国产自产在线| 视频一区在线观看| 亚洲福利影院| 天天天天天天天操| 精品国产乱码久久久久久闺蜜| 成人18网址在线观看| 日韩国产欧美视频| 麻豆精品视频在线原创| 成人av综合在线| 国内av免费| 国产情侣呻吟对白高潮| 欧美高清性xxxxxxx| 欧美自拍丝袜亚洲| 中国一级黄色录像| 78精品国产综合久久香蕉| 77777少妇光屁股久久一区| 久久精品 人人爱| 日韩视频亚洲视频| 丰满少妇一区二区三区专区| 国产精品老女人精品视频| 欧美激情视频在线免费观看 欧美视频免费一| 伊大人久久香线焦宗合一75大| 有码一区二区三区| 日本高清一二三区| 波多野结衣电影免费观看| 久久久久亚洲AV成人无码国产| 最近2019中文字幕第三页视频| 国产精品区在线观看| 国产九区一区在线| 久久综合网色—综合色88| 色综合久久精品亚洲国产|