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

如何在 ASP.NET Core 中集成 ElasticSearch

開發(fā) 后端
ElasticSearch將數(shù)據(jù)存儲在一個或多個索引中。ES的索引與SQL DB的索引非常相似,因為我們使用它來存儲和讀取文檔。

[[432391]]

本文來自:https://www.blexin.com/en-US/Article/Blog/How-to-integrate-ElasticSearch-in-ASPNET-Core-70

我敢打賭,您肯定會被要求向Web應(yīng)用程序中添加高級搜索功能,而且通常是全文的類似Google的搜索。

在技術(shù)電子商務(wù)的開發(fā)過程中,我們被要求允許用戶對產(chǎn)品進行高級研究,以便他們可以高效,完全地找到所需的內(nèi)容。

我們基于對象的所有字段上給定字符串的搜索嘗試了自定義搜索的實現(xiàn)。為了優(yōu)化時間,我們嘗試在服務(wù)和數(shù)據(jù)庫級別之間添加一個緩存層,以避免對數(shù)據(jù)庫造成過多壓力,但是我們對結(jié)果不滿意。然后,我們在市場上搜索了可以滿足我們需求的第三方產(chǎn)品,經(jīng)過深入分析,我們選擇采用ElasticSearch:一個基于REST協(xié)議的,可管理研究和分析的分布式,易于適應(yīng)的搜索引擎同樣,也方便了數(shù)據(jù)的外推和轉(zhuǎn)換。

具體來說,我們正在談?wù)摶贏pache Lucene的開源全文搜索引擎,該引擎可用于管理文檔的索引和研究。讓我們嘗試了解基本概念。

ElasticSearch將數(shù)據(jù)存儲在一個或多個索引中。ES的索引與SQL DB的索引非常相似,因為我們使用它來存儲和讀取文檔。

文檔是ElasticSearch世界的主要實體。它由一組具有名稱和一個或多個值的字段組成。每個文檔可能具有一組字段,并且沒有給出任何架構(gòu)或定義的結(jié)構(gòu)。這只是一個JSON對象。

所有文檔在存儲之前都經(jīng)過分析。這種分析過程(稱為映射)是通過過濾數(shù)據(jù)內(nèi)容(例如,刪除HTML標(biāo)簽)并將其標(biāo)記化來執(zhí)行的,以便將文檔拆分為標(biāo)記。

ElasticSearch中的每個文檔都有一個類型。這樣就可以將各種文檔類型存儲在同一索引上,并為幾種類型獲取幾種映射。

ElasticSearch服務(wù)器的單個實例稱為Node。在很多情況下,單個節(jié)點就足夠了,但是有時您需要管理故障,或者您有太多數(shù)據(jù)無法使用單個節(jié)點進行管理。在這種情況下,您可以使用多節(jié)點集群,這是一組協(xié)同工作的節(jié)點來管理比單個實例無法處理的更大的負(fù)載。您可以配置群集,以便即使某些節(jié)點不可用,也可以保證搜索和管理功能。

為了使群集正常運行,ElasticSearch將數(shù)據(jù)分布在Apache Lucene的多個物理索引上。這些索引稱為“ 碎片”,而擴展過程稱為“ 碎片”。ElasticSearch自動管理分片,因此最終用戶似乎只是一個大索引。

副本是分片的副本,可用于以原始分片的相同模式進行查詢。

副本可減輕無法處理所有請求的單個節(jié)點上的負(fù)載,并提供更高的數(shù)據(jù)安全性,因為如果您丟失了原始分片中的數(shù)據(jù),則可以在副本上對其進行恢復(fù)。

ElasticSearch收集了大量有關(guān)集群狀態(tài),索引設(shè)置的信息,并將它們存儲到網(wǎng)關(guān)中。

從結(jié)構(gòu)上講,ElasticSearch基于一些簡單的關(guān)鍵概念:

  • 默認(rèn)設(shè)置和值使得默認(rèn)配置足以立即使用ElasticSearch。
  • 它以分布式方式工作。節(jié)點自動成為集群的一部分,并且在設(shè)置過程中,節(jié)點嘗試加入集群。
  • 沒有SPOF的P2P體系結(jié)構(gòu)(單點故障)。節(jié)點自動連接到群集的其他計算機以更改數(shù)據(jù)和相互監(jiān)視;
  • 只需在集群中添加新節(jié)點,就可以輕松地進行擴展,無論是在數(shù)據(jù)量上還是在容量上。
  • 在組織索引中的數(shù)據(jù)方面沒有任何限制。允許用戶修改數(shù)據(jù)模型而不會對搜索產(chǎn)生任何影響;
  • NRT(近實時)搜索和版本控制。由于其分布式特性,無法避免延遲和位于不同節(jié)點上的數(shù)據(jù)之間的差異。因此,它提供了版本控制機制。

當(dāng)ElasticSearch節(jié)點啟動時,它使用多播(或單播,如果已配置)來查找同一集群中的其他節(jié)點并連接到它們。

在群集中,選擇一個節(jié)點作為主節(jié)點。該節(jié)點負(fù)責(zé)管理集群狀態(tài)和將分片分配給節(jié)點的過程。主節(jié)點讀取集群狀態(tài),并在需要時啟動恢復(fù)模式,該模式允許知道哪些分片可用,并指定其中一個作為主分片。這樣,即使群集沒有可用的全部資源,它也似乎可以正常工作。然后,主節(jié)點查找重復(fù)的分片,并將其作為副本處理。

在標(biāo)準(zhǔn)運行期間,主節(jié)點檢查所有可用節(jié)點是否正常工作。如果其中之一在配置的時間范圍內(nèi)不可用,則將該節(jié)點視為已損壞,并運行容錯過程。容錯的主要活動是平衡已損壞節(jié)點的群集和碎片,并分配一個負(fù)責(zé)這些碎片的新節(jié)點。然后,對于每個主分片丟失,將定義一個在可用副本之間選擇的新主分片。

如前所述,ElasticSearch提供了一些API REST,可供每個能夠發(fā)送HTTP請求和接收HTTP響應(yīng)的系統(tǒng)使用(大多數(shù)開發(fā)框架的所有瀏覽器和庫)。

ElasticSearch請求由一些包含的已定義URL發(fā)送。最終是JSON主體。響應(yīng)也是JSON文檔。

ElasticSearch提供了四種索引數(shù)據(jù)的方式。

1.索引API:它允許將文檔發(fā)送到已定義的索引;

2.批量API:它允許通過HTTP協(xié)議發(fā)送多個文檔;

3.UDP批量API:它允許通過任何協(xié)議發(fā)送多個文檔(更快但更不可靠);

4.插件:在節(jié)點上執(zhí)行,它們從外部系統(tǒng)獲取數(shù)據(jù)。

重要的是要記住,索引只是在主分片上而不是在其副本上,因此,如果將索引請求發(fā)送到不包含主分片或可能包含其副本的節(jié)點,則該請求將轉(zhuǎn)發(fā)到主分片。

使用Query API執(zhí)行搜索。使用查詢DSL(基于JSON的語言來構(gòu)建復(fù)雜的查詢),可以:

  • 使用各種類型的查詢,包括簡單查詢,短語,范圍,布爾值,空間查詢和其他查詢;
  • 通過組合簡單查詢來構(gòu)建復(fù)雜查詢;
  • 通過排除不符合選定條件的文檔而不影響其分?jǐn)?shù)來過濾文檔;
  • 查找與其他文件相似的文件;
  • 查找給定短語的建議或更正;
  • 查找與給定文檔匹配的查詢。

搜索不是一個單階段的簡單過程,但是,通常可以將其分為兩個階段:scatter(分散),在其中查詢索引的所有相關(guān)分片;gather(收集),在其中收集,處理和排序所有寶貴的結(jié)果。

弄臟你的手!

ES提供了云和本地兩種使用方式。如果要在Windows計算機上安裝它,則需要具有Java虛擬機的更新版本(https://www.elastic.co/support/matrix#matrix_jvm),然后可以從ElasticSearch下載中下載一個zip文件。頁面(https://www.elastic.co/downloads/elasticsearch)并將其提取到磁盤上的文件夾中,例如C:\ Elasticsearch。

要執(zhí)行它,您可以運行C:\ Elasticsearch \ bin \ elasticsearch.bat。

如果要將ElasticSearch用作服務(wù),以便可以使用Windows工具啟動或停止它,則需要在文件C:\ Elasticsearch \ config \ jvm.options中添加一行。

對于32位系統(tǒng),您必須鍵入-Xss320k*,對于64位系統(tǒng)-Xss1m。*

更改此設(shè)置后,您必須打開命令提示符或Powershell并執(zhí)行

C:\ Elasticsearch \ bin \ elasticsearch-service.bat

。可用的命令包括 install, remove, start, stop 和manager.。

要創(chuàng)建服務(wù),我們必須輸入:

C:\ Elasticsearch \ bin \ elasticsearch-service.bat install

要管理服務(wù),我們鍵入:

C:\ Elasticsearch \ bin \ elasticsearch-service.bat manager

器,該管理器打開Elastic Service Manager,這是一個GUI,可通過該GUI進行有關(guān)服務(wù)的自定義設(shè)置并管理其狀態(tài)。

默認(rèn)cluster.name和node.name是elasticsearch分別和你的主機名。如果您打算繼續(xù)使用該群集或添加更多節(jié)點,則最好通過在elasticsearch.yml

文件中對其進行修改來將這些默認(rèn)值更改為唯一名稱。

我們可以通過瀏覽http:// localhost:9200 /來驗證ElasicSearch的正確執(zhí)行。如果一切正常,我們將得到以下結(jié)果:

為了實現(xiàn)基于.NET Core的解決方案,我們使用了NEST軟件包,可以通過以下命令安裝該軟件包:

  1. dotnet add package NEST 

NEST允許我們在索引和搜索文檔以及節(jié)點和分片的管理中本地使用所有ElasticSearch功能。為了管理NEST插件,我們創(chuàng)建了ElasticsearchExtensions類:

  1. public static class ElasticsearchExtensions 
  2.     public static void AddElasticsearch(this IServiceCollection services, IConfiguration configuration) 
  3.     { 
  4.         var url = configuration["elasticsearch:url"]; 
  5.         var defaultIndex = configuration["elasticsearch:index"]; 
  6.  
  7.         var settings = new ConnectionSettings(new Uri(url)) 
  8.             .DefaultIndex(defaultIndex); 
  9.  
  10.         AddDefaultMappings(settings); 
  11.  
  12.         var client = new ElasticClient(settings); 
  13.  
  14.         services.AddSingleton(client); 
  15.  
  16.         CreateIndex(client, defaultIndex); 
  17.     } 
  18.  
  19.     private static void AddDefaultMappings(ConnectionSettings settings) 
  20.     { 
  21.         settings 
  22.             DefaultMappingFor<Product>(m => m 
  23.                 .Ignore(p => p.Price) 
  24.                 .Ignore(p => p.Quantity) 
  25.                 .Ignore(p => p.Rating) 
  26.             ); 
  27.     } 
  28.  
  29.     private static void CreateIndex(IElasticClient client, string indexName) 
  30.     { 
  31.         var createIndexResponse = client.Indices.Create(indexName, 
  32.             index => index.Map<Product>(x => x.AutoMap()) 
  33.         ); 
  34.     } 

在其中我們找到對象的配置和映射,在本例中為Product類。在此類中,我們決定忽略在索引階段存儲價格,數(shù)量和評級。通過以下指令在Startup.cs中調(diào)用此類:

  1. public void ConfigureServices(IServiceCollection services) 
  2.     // ... 
  3.     services.AddElasticsearch(Configuration); 

這使我們能夠在啟動時加載的所有設(shè)置,在修改它們elasticsearch的appsettings.json文件,在其中我們插入如下一行:

  1. "elasticsearch": { 
  2.         "index""products"
  3.         "url""http://localhost:9200/" 

索引表示選擇用來存儲文檔的默認(rèn)索引,而url是我們的ElasticSearch實例的地址。我們的產(chǎn)品對象定義如下:

  1. public class Product 
  2. public int Id { get; set; } 
  3. public string Ean { get; set; } 
  4. public string Name { get; set; } 
  5. public string Description { get; set; } 
  6. public string Brand { get; set; } 
  7. public string Category { get; set; } 
  8. public string Price { get; set; } 
  9. public int Quantity { get; set; } 
  10. public float Rating { get; set; } 
  11. public DateTime ReleaseDate { get; set; } 

如前所述,可以分別或在列表中為產(chǎn)品建立索引。在我們的產(chǎn)品服務(wù)中,我們實現(xiàn)了兩種方式:

  1. public async Task SaveSingleAsync(Product product) 
  2.     if (_cache.Any(p => p.Id == product.Id)) 
  3.     { 
  4.         await _elasticClient.UpdateAsync<Product>(product, u => u.Doc(product)); 
  5.     } 
  6.     else 
  7.     { 
  8.         _cache.Add(product); 
  9.         await _elasticClient.IndexDocumentAsync(product); 
  10.     } 
  11.  
  12. public async Task SaveManyAsync(Product[] products) 
  13.     _cache.AddRange(products); 
  14.     var result = await _elasticClient.IndexManyAsync(products); 
  15.     if (result.Errors) 
  16.     { 
  17.         // the response can be inspected for errors 
  18.         foreach (var itemWithError in result.ItemsWithErrors) 
  19.         { 
  20.             _logger.LogError("Failed to index document {0}: {1}"
  21.                 itemWithError.Id, itemWithError.Error); 
  22.         } 
  23.     } 
  24.  
  25. public async Task SaveBulkAsync(Product[] products) 
  26.     _cache.AddRange(products); 
  27.     var result = await _elasticClient.BulkAsync(b => b.Index("products").IndexMany(products)); 
  28.     if (result.Errors) 
  29.     { 
  30.         // the response can be inspected for errors 
  31.         foreach (var itemWithError in result.ItemsWithErrors) 
  32.         { 
  33.             _logger.LogError("Failed to index document {0}: {1}"
  34.                 itemWithError.Id, itemWithError.Error); 
  35.         } 
  36.     } 

在這里我們使用_cache數(shù)組來進一步緩存產(chǎn)品列表。對于多模式,我們也實現(xiàn)了批量版本,這使我們能夠在更短的時間內(nèi)索引大量文檔,并且我們已經(jīng)處理了日志插入中的任何錯誤。

請注意,SaveSingleAsync方法通過檢查緩存數(shù)組來管理文檔的插入和修改。

對于文檔刪除,我們實現(xiàn)了DeleteAsync方法:

  1. public async Task DeleteAsync(Product product) 
  2.     await _elasticClient.DeleteAsync<Product> 
  3. (product); 
  4.  
  5.     if (_cache.Contains(product)) 
  6.     { 
  7.         _cache.Remove(product); 
  8.     } 

GetSearchUrl方法允許我們獲取用于管理頁面調(diào)度的URL。出于開發(fā)目的,我們實現(xiàn)了ReIndex方法,該方法允許我們刪除索引上的所有文檔,然后一次又一次地導(dǎo)入它們。這對于導(dǎo)入現(xiàn)有和未加載文檔的列表很有用。

  1. //Only for development purpose 
  2. [HttpGet("/search/reindex")] 
  3. public async Task<IActionResult>ReIndex() 
  4.     await _elasticClient.DeleteByQueryAsync<Product>(q => q.MatchAll()); 
  5.  
  6.     var allProducts = (await _productService.GetProducts(int.MaxValue)).ToArray(); 
  7.  
  8.     foreach (var product in allProducts) 
  9.     { 
  10.         await _elasticClient.IndexDocumentAsync(product); 
  11.     } 
  12.  
  13.     return Ok($"{allProducts.Length} product(s) reindexed"); 

出于示例目的,我們創(chuàng)建了一個界面,該界面允許我們通過Bogus插件添加N個動態(tài)生成的產(chǎn)品,并管理產(chǎn)品的CRUD。運行項目后,我們將看到以下屏幕:

 

例如,如果我們嘗試將10種產(chǎn)品添加到索引中,在文本框中輸入10,然后單擊“ 導(dǎo)入文檔”按鈕,則可以使用搜索框查看結(jié)果,也可以直接從瀏覽器中瀏覽到http頁面:// localhost:9200 / products / _search,我們將在其中得到這樣的結(jié)果:

本文中使用的代碼可在此處獲得[2]。

References

[1] 查看原文: https://www.blexin.com/en-US/Article/Blog/How-to-integrate-ElasticSearch-in-ASPNET-Core-70 

[2] 在此處獲得: https://github.com/enricobencivenga/ElasticSearch

責(zé)任編輯:武曉燕 來源: DotNET技術(shù)圈
相關(guān)推薦

2021-03-17 09:45:31

LazyCacheWindows

2021-02-02 16:19:08

Serilog日志框架

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-01-31 22:56:50

FromServiceASP

2021-02-28 20:56:37

NCache緩存框架

2021-03-10 09:40:43

LamarASP容器

2021-02-03 13:35:25

ASPweb程序

2021-01-28 22:39:35

LoggerMessa開源框架

2021-03-03 22:37:16

MediatR中介者模式

2021-01-07 07:39:07

工具接口 Swagger

2021-03-18 07:33:54

PDF DinkToPdfC++

2021-02-07 17:29:04

監(jiān)視文件接口

2021-01-15 05:38:28

ASPHttp端口

2021-01-13 07:33:41

API數(shù)據(jù)安全

2021-11-02 13:54:41

ElasticSear.NET程序

2021-06-22 16:59:56

微軟.NETC# 軟件開發(fā)

2017-04-21 12:03:46

MacASP.NET Cor程序

2021-01-26 14:57:00

中間件應(yīng)用模塊化

2021-01-11 05:20:05

Controller代碼數(shù)據(jù)層

2021-04-12 07:03:10

輕量級模塊化框架
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲精品不卡在线观看 | 日韩亚洲欧美高清| 成人短视频在线看| 丰满熟妇人妻中文字幕| 麻豆精品网站| 超碰精品一区二区三区乱码| jjzzjjzz欧美69巨大| 日韩电影免费观看高清完整版| 国产精品家庭影院| 国内一区二区在线视频观看| 无码久久精品国产亚洲av影片| 中文字幕一区二区三区欧美日韩| 亚洲激情久久久| 中文字幕久久av| 日本黄色免费在线| 自拍视频在线观看一区二区| 久久久99国产精品免费| 91精品中文字幕| 男女精品网站| 欧美激情免费观看| 国产精品情侣呻吟对白视频| 国产欧美啪啪| 91精品国产乱| 亚洲少妇第一页| jizzjizz中国精品麻豆| 国产精品色噜噜| 另类欧美小说| 亚洲第一色网站| 久久99精品久久久| 日本精品视频在线播放| 国产无遮挡又黄又爽在线观看 | 亚洲欧美日韩网| 黑人巨大猛交丰满少妇| 色8久久影院午夜场| 亚洲一二三专区| 精品一区二区成人免费视频| 91caoporn在线| 久久久久久电影| 国产一区二区久久久| 精品久久久无码中文字幕| 日韩精品成人一区二区在线| 97精品久久久| 91精品国产高潮对白| 欧美成人一品| 久久视频在线直播| 亚洲 欧美 国产 另类| 国产一区二区三区网| 日韩精品免费视频| 你懂得在线视频| 激情小说一区| 亚洲爱爱爱爱爱| 日本精品一二三区| 日韩高清二区| 欧美成人精品福利| www日本在线观看| 视频在线亚洲| 欧美变态口味重另类| 97人人模人人爽人人澡| 亚洲视频精选| 亚洲第一国产精品| 欧美一区二区免费在线观看| 久久九九热re6这里有精品 | 美州a亚洲一视本频v色道| 99精品视频一区| 激情视频一区二区| 天堂在线观看av| 2023国产精品自拍| 欧美日产一区二区三区在线观看| 蝌蚪视频在线播放| 欧美国产日韩精品免费观看| 亚洲一区二区三区涩| 黄色网页在线免费观看| 一区二区三区.www| 黄色动漫网站入口| 亚洲天堂一区二区| 欧美男女性生活在线直播观看| 手机免费av片| 91麻豆精品激情在线观看最新| 亚洲成色999久久网站| 日韩网站在线播放| 四虎成人av| 久久99久国产精品黄毛片入口| 欧美片一区二区| 中日韩男男gay无套| 日本在线观看天堂男亚洲| 亚洲一级视频在线观看| 国产很黄免费观看久久| 国产伦精品一区二区三区高清| 青青草免费在线视频| 国产精品高潮久久久久无| 成年丰满熟妇午夜免费视频| 国产亚洲成av人片在线观看| 欧美在线一区二区三区| 4438x全国最大成人| 神马香蕉久久| 久久精品中文字幕免费mv| 国产在线视频99| 日韩成人午夜电影| 不卡视频一区二区| 国产一二三区在线视频| 亚洲黄色av一区| 亚洲精品无码久久久久久| 少妇高潮一区二区三区99| 欧美精品一区二区久久婷婷| 国产又粗又猛又爽又黄的视频小说| 国产精品mm| 国产精品麻豆va在线播放| 国产成人三级在线观看视频| 欧美国产丝袜视频| 国产手机免费视频| 日日夜夜综合| 亚洲欧洲高清在线| 亚洲国产精品成人无久久精品 | 性chinese极品按摩| 大奶在线精品| www.欧美三级电影.com| 国产精品美女久久久久av爽| 国产精品系列在线播放| 午夜精品一区二区三区四区| 天堂中文av在线资源库| 日韩亚洲欧美成人一区| 久久精品在线观看视频| 日本欧美久久久久免费播放网| 国产精品一区视频网站| 伊人春色在线观看| 欧美精品亚洲一区二区在线播放| 久久精品一区二区免费播放| 激情综合电影网| 2022国产精品| 国产网站在线免费观看| 日本福利一区二区| 538国产视频| 激情久久一区| yy111111少妇影院日韩夜片| 国产网站在线免费观看| 欧美丰满美乳xxx高潮www| 亚洲黄色小说视频| 国产亚洲网站| 久久久av水蜜桃| 国产夫妻在线| 亚洲精品美女在线观看| 日本在线小视频| 懂色av噜噜一区二区三区av| 天堂а√在线中文在线| 亚洲一区二区av| 日韩一区二区欧美| 在线观看国产精品视频| 欧美激情一区不卡| 日韩一区二区三区不卡视频| 精品无人区麻豆乱码久久久| 国产成人精品av在线| 精品999视频| 色婷婷综合久久久中文字幕| 国产精品扒开腿做爽爽| 视频一区视频二区中文字幕| 欧美日韩一区二区视频在线观看| 成人片免费看| 一二美女精品欧洲| 在线观看中文字幕网站| 亚洲欧洲精品成人久久奇米网| 国产精欧美一区二区三区白种人| 羞羞答答成人影院www| 91久久在线视频| 亚洲羞羞网站| 亚洲精品大尺度| 69国产精品视频免费观看| 国产三级精品视频| 国产九九在线观看| 综合一区二区三区| 国产精品国色综合久久| 欧美a级在线观看| 亚洲最大在线视频| 91丨九色丨丰满| 亚洲第一主播视频| 少妇按摩一区二区三区| 久久激情综合网| 欧美精品在欧美一区二区| 国产欧美自拍一区| 国产精品高清在线| 超碰porn在线| 日韩av最新在线观看| 人妻中文字幕一区二区三区| 亚洲人被黑人高潮完整版| 午夜男人的天堂| 日韩在线一二三区| 成人在线免费观看网址| 欧美日韩一本| 国产中文日韩欧美| 超碰在线资源| 日韩在线资源网| 日本激情一区二区三区| 在线看一区二区| 久久久精品一区二区涩爱| 国产片一区二区三区| 亚洲精品中文字幕乱码无线| 久久成人国产| 妞干网这里只有精品| 欧美日本成人| 97视频资源在线观看| 成人软件在线观看| 久久久久久69| 欧美极品另类| 亚洲欧美三级在线| 国产喷水吹潮视频www| 日韩欧美在线国产| 中文字幕在线2021| 久久久精品黄色| 五月天丁香社区| 麻豆极品一区二区三区| 成人一对一视频| 最新精品国产| 亚洲精品自在在线观看| 色婷婷狠狠五月综合天色拍 | 中文字幕一区二区三区色视频 | 欧美jizz19性欧美| 成人精品aaaa网站| 国产亚洲一区二区手机在线观看| 欧美精品福利在线| 欧美猛烈性xbxbxbxb| 亚洲人成网站999久久久综合| 亚洲欧美高清视频| 在线播放中文一区| 超碰超碰超碰超碰| 亚洲午夜日本在线观看| www.5588.com毛片| 欧美高清在线视频| 欧美 日韩 国产 成人 在线观看| www.日本不卡| 无码人妻一区二区三区精品视频| 久久黄色级2电影| 黄色aaa级片| 校园激情久久| 国产91在线免费| 在线综合亚洲| 欧美爱爱视频免费看| 亚洲大胆视频| 青青草成人免费在线视频| 欧美激情1区2区| 欧美一级黄色录像片| 一本一本久久a久久综合精品| 亚洲欧美日韩精品久久久 | 一区二区三区国产在线观看| 色资源在线观看| 亚洲剧情一区二区| 欧美女优在线| 国产亚洲精品一区二区| 国产中文字幕在线视频| 亚洲欧美日韩网| 岛国在线大片| 中文字幕欧美日韩| 伊人免费在线| 精品国产一区二区三区久久久 | 一色屋精品亚洲香蕉网站| 国产午夜精品久久久久久久久| 欧美国产日韩一二三区| 九一在线免费观看| 综合久久久久久久| 日韩在线观看视频一区二区| 一二三区精品视频| 日韩av无码中文字幕| 精品国产91久久久久久老师| 久草视频一区二区| 欧美午夜电影网| 91久久国语露脸精品国产高跟| 日韩一区二区中文字幕| 亚洲第一精品网站| 亚洲欧美国产精品| 午夜国产福利在线| 九九热这里只有在线精品视| 毛片网站在线看| 欧美亚洲午夜视频在线观看| 少妇一区视频| 91日韩在线播放| 国内自拍欧美| 青青草成人网| 亚洲精品一区二区妖精| 国产黄色片免费在线观看| 亚洲综合电影一区二区三区| 日韩一区二区三区不卡视频| 国产丶欧美丶日本不卡视频| 亚洲精品乱码久久| 日本一区二区三区久久久久久久久不 | 成人久久网站| 成人av蜜桃| 欧美禁忌电影网| 成年丰满熟妇午夜免费视频 | 中文字幕在线观看日| 丁香六月久久综合狠狠色| 精品人妻无码一区二区三区 | 欧美日韩在线免费观看视频| 黄色在线一区| 国产wwwxx| 成人一区在线看| 超薄肉色丝袜一二三| 一区二区三区免费看视频| 91精品国产综合久久久蜜臀九色 | 日本黄色的视频| 92国产精品观看| 国产精品国产三级国产传播| 精品电影在线观看| 国产一区二区视频免费观看| 亚洲黄在线观看| 精品国产丝袜高跟鞋| 国产91精品久久久久| 亚洲精品一二三**| 亚洲精品成人自拍| 国产日韩亚洲欧美精品| 少妇性l交大片7724com| 国产欧美一区二区精品久导航| 妺妺窝人体色www聚色窝仙踪| 欧美无砖砖区免费| 婷婷丁香花五月天| 欧美成人午夜免费视在线看片 | 亚洲第一黄色网址| 亚洲精选视频在线| 中文字幕av影视| 日韩精品电影网| 手机在线免费看av| 成人午夜高潮视频| 欧美色蜜桃97| 人妻内射一区二区在线视频| 成人sese在线| 日本黄色小说视频| 欧美精品色综合| 在线视频91p| 日韩av第一页| 日韩av不卡一区| 国产a级片网站| 国产白丝网站精品污在线入口| 婷婷激情四射网| 欧美精品高清视频| 在线激情免费视频| 国产精品对白刺激| 国产一区二区三区日韩精品 | 日韩福利片在线观看| 日韩欧美国产1| 羞羞电影在线观看www| 91久久国产综合久久91精品网站| 日韩av自拍| 尤蜜粉嫩av国产一区二区三区| 久久久久88色偷偷免费| 国产寡妇亲子伦一区二区三区四区| 亚洲国产一区二区三区在线观看| 欧美24videosex性欧美| 147欧美人体大胆444| 欧美日一区二区三区在线观看国产免| 一二三av在线| 一区二区三区在线高清| 亚洲成人第一区| 国内久久久精品| 久久97精品| 中文字幕日本最新乱码视频| 91在线视频官网| 好看的av在线| 亚洲丝袜一区在线| 亚洲爱爱视频| 中文字幕人成一区| 国产精品自拍三区| 久久午夜无码鲁丝片午夜精品| 欧美精品一区二区三| 日韩激情电影| 日韩国产欧美一区| 久久福利资源站| 全程偷拍露脸中年夫妇| 欧美成人一级视频| 日本不良网站在线观看| 日本高清一区| 久久精品国产免费看久久精品| 美女视频久久久| 精品久久久久久无| 综合久久2023| 一本色道久久综合亚洲二区三区| 国产一区二区三区在线观看免费| 免费网站看av| 亚洲免费一在线| 欧洲亚洲精品久久久久| 日韩成人手机在线| 久久综合色婷婷| 一区二区美女视频| 欧美激情第三页| 久草在线成人| 毛片毛片毛片毛| 亚洲二区在线观看| 77导航福利在线| 电影午夜精品一区二区三区| 亚洲一区国产| 欧美特黄一级片| 日韩精品在线视频| 亚洲成人a级片| 欧美 日韩 国产在线观看| 欧美韩国日本不卡| 日韩在线视频第一页| 国产精品午夜视频| 亚洲区一区二| 色哟哟一一国产精品| 亚洲黄色成人网| 久久99精品久久久野外观看| 亚洲人成色77777| 一区二区三区日韩欧美精品 | 鲁大师精品99久久久|