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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java微服务篇4——Elastic search

發(fā)布時間:2025/3/12 java 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java微服务篇4——Elastic search 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java微服務篇4——Elastic search

1、Elastic search安裝配置

Elastic search官方:https://www.elastic.co/cn/products/elasticsearch

Elastic search6.2.4 百度云:https://pan.baidu.com/s/1JyQok8Nija4gYhcjh-HWcw提取碼:isa2

解壓即可

在config/elasticsearch.yml修改

# ----------------------------------- Paths ------------------------------------ # # Path to directory where to store the data (separate multiple locations by comma): # path.data: /path/to/data # # Path to log files: # path.logs: /path/to/logs

啟動bin目錄下的elasticsearch.bat/elasticsearch.sh

訪問

http://localhost:9200/

2、kibana安裝

Kibana是一個基于Node.js的Elasticsearch索引庫數據統(tǒng)計工具,可以利用Elasticsearch的聚合功能, 生成各種圖表,如柱形圖,線狀圖,餅圖等。 而且還提供了操作Elasticsearch索引數據的控制臺

kibana6.2.4 百度云:https://pan.baidu.com/s/1AlD34ZYvHqtVwaapRh3tPA提取碼:p8gr

在config/kibana.yml修改

elasticsearch.url: "http://localhost:9200"

3、ik分詞器

elasticsearch-analysis-ik-6.2.4 百度云:https://pan.baidu.com/s/1L4_fQIgLmLoLpKL8sXAAFw提取碼:8k05

解壓elasticsearch-analysis-ik-6.2.4.zip后,將解壓后的文件夾拷貝到elasticsearch-6.2.4\plugins 下,并重命名文件夾為ik

重啟即可

測試

GET /_analyze {"text": "我是中國人" }

GET /_analyze {"analyzer": "ik_max_word","text": "我是中國人" }

GET /_analyze {"analyzer": "ik_min_word","text": "我是中國人" }

4、elasticsearch-head

elasticsearch-head 百度云:https://pan.baidu.com/s/1JsOvr64gb5xNbkPPJafyag提取碼:6khj

5、elastic search操作

映射屬性數據類型

一級分類二級分類具體類型類型描述
核心類型字符串類型text當一個字段是要被全文搜索的,比如Email內容、產品描述,應該使用text類型
設置text類型以后,字段內容會被分析,在生成倒排索引以前,字符串會被分析器分成一個一個詞項
text類型的字段不用于排序,很少用于聚合
keywordkeyword類型適用于索引結構化的字段,比如email地址、主機名、狀態(tài)碼和標簽
如果字段需要進行過濾(比如查找已發(fā)布博客中status屬性為published的文章)、排序、聚合
keyword類型的字段只能通過精確值搜索到
整數類型byte-128~127
short-32768~32767
integer-231~231-1
long-263~263-1
浮點類型float32位單精度IEEE 754浮點類型
double64位雙精度IEEE 754浮點類型
half_float16位半精度IEEE 754浮點類型
scaled_float縮放類型的的浮點數
邏輯類型booleantrue,false
日期類型date(1)日期格式的字符串,比如 “2018-01-13” 或 “2018-01-13 12:10:30”
(2)long類型的毫秒數
(3)integer的秒數seconds-since-the-epoch
范圍類型range
二進制類型binary進制字段是指用base64來表示索引中存儲的二進制數據,可用來存儲二進制形式的數據,例如圖像
復合類型數組類型array(1)字符數組: [ “one”, “two” ]
(2)整數數組: productid:[ 1, 2 ]
(3)對象(文檔)數組: “user”:[ { “name”: “Mary”, “age”: 12 }, { “name”: “John”, “age”: 10 }]
對象類型objectJSON對象,文檔會包含嵌套的對象
嵌套類型nested用于JSON對象數組
地理類型地理坐標類型geo_point緯度/經度積分
地理地圖geo_shape用于多邊形等復雜形狀
特殊類型IP類型ip用于存儲IPv4或者IPv6的地址
范圍類型completion提供自動完成建議
令牌計數類型token_count計算字符串中令牌的數量

index

是否被索引

index的默認值就是true,也就是說你不進行任何配置,所有字段都會被索引,有些字段是我們不希望被索引的,比如商品的圖片信息(URL),就需要手動設置index為false

stroe

是否額外存儲

在lucene里,如果一個字段的store設置為false,那么在文檔列表中就不會有這個字段的 值,用戶的搜索結果中不會顯示出來,但是在Elasticsearch中,即便store設置為false,也可以搜索到結果

原因是Elasticsearch在創(chuàng)建文檔索引時,會將文檔中的原始數據備份,保存到一個叫做 _source 的屬性 中。而且我們可以通過過濾 _source 來選擇哪些要顯示,哪些不顯示

如果設置store為true,就會在 _source 以外額外存儲一份數據,多余,因此一般我們都會將store設 置為false,事實上,store的默認值就是false

在某些情況下,這對 store 某個領域可能是有意義的。例如,如果您的文檔包含一個 title ,一個 date 和一個非常大的 content 字段,則可能只想檢索the title 和the date 而不必從一個大 _source 字段中提取這些字段

boost

網站權重:網站權重是指搜索引擎給網站(包括網頁)賦予一定的權威值,對網站(含網頁)權威的評估評價。一 個網站權重越高,在搜索引擎所占的份量越大,在搜索引擎排名就越好。提高網站權重,不但利于網站(包括網 頁)在搜索引擎的排名更靠前,還能提高整站的流量,提高網站信任度。所以提高網站的權重具有相當重要的意 義。 權重即網站在SEO中的重要性,權威性。英文:Page Strength。

  • 權重不等于排名
  • 權重對排名有著 非常大的影響
  • 整站權重的提高有利于內頁的排名

5.1、庫操作(database)

# 添加索引庫 PUT /索引庫名 # 獲取索引庫信息 GET /索引庫名 # 刪除索引庫 DELETE /索引庫名

5.2、類型及映射操作(表)

創(chuàng)建數據庫表需要設置字段約束,索引庫也一樣,在創(chuàng)建索引庫的類型時,需要知道這個類型下 有哪些字段,每個字段有哪些約束信息,這就叫做 字段映射(mapping)

# 添加類型及映射1(向索引庫追加類型及映射) PUT winkto/_mapping/goods {"properties": {"title": {"type": "text","analyzer": "ik_max_word"},"images": {"type": "keyword","index": "false"},"price": {"type": "float"}} } # 添加類型及映射2(在索引庫創(chuàng)建時添加類型及映射) PUT /winkto2 {"settings": {},"mappings": {"goods": {"properties": {"title": {"type": "text","analyzer": "ik_max_word"}}}} } # 查看類型及映射 GET winkto/_mapping GET winkto/_mapping/goods

5.3、追加數據

# 追加數據(隨機id) POST /winkto/goods/ {"title":"小米10","images":"http://image.lagou.com/12479122.jpg","price":2699.00 }

# 追加數據(指定id) POST /winkto/goods/sadhsahduashfusahdi {"title":"華為","images":"http://image.lagou.com/12479122.jpg","price":4699.00 }

# 獲取數據 GET /winkto/goods/xqurVHsB1mHhNfuBSw0p

5.4、刪除數據

DELETE /winkto/goods/sadhsahduashfusahdi

5.5、查詢

語法

GET /索引庫名/_search {"query":{"查詢類型":{"查詢條件":"查詢條件值"}} }

5.5.1、查詢所有

GET /winkto/_search {"query":{"match_all":{}} } {"took": 2,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 1,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 1,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}},{"_index": "winkto","_type": "goods","_id": "kBFMWHsBy-koX7e_VW4W","_score": 1,"_source": {"title": "華為pro30","images": "http://image.lagou.com/12479122.jpg","price": 5699}}]} }

5.5.2、條件查詢

GET /winkto/_search {"query":{"match":{"title": "小米"}} } {"took": 16,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.2876821,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 0.2876821,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}}]} }

match 類型查詢,會把查詢條件進行分詞,然后進行查詢,多個詞條之間是or的關系

GET /winkto/_search {"query":{"match":{"title": "小米華為"}} } {"took": 355,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 0.2876821,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 0.2876821,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}},{"_index": "winkto","_type": "goods","_id": "kBFMWHsBy-koX7e_VW4W","_score": 0.2876821,"_source": {"title": "華為pro30","images": "http://image.lagou.com/12479122.jpg","price": 5699}}]} }

但是有些時候我們希望分詞關系為and

GET /winkto/_search {"query":{"match":{"title": {"query": "小米華為","operator": "and"}}} } {"took": 8,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.5753642,"hits": [{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": 0.5753642,"_source": {"title": "小米華為plusplus","images": "http://image.lagou.com/12479122.jpg","price": 2699}}]} }

5.5.3、詞條匹配

term 查詢被用于精確值 匹配,這些精確值可能是數字、時間、布爾或者那些未分詞的字符 串,keyword類型的字符串

GET /winkto/_search {"query":{"term": {"price": 2699}} } {"took": 7,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 1,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 1,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}},{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": 1,"_source": {"title": "小米華為plusplus","images": "http://image.lagou.com/12479122.jpg","price": 2699}}]} }

5.5.4、布爾組合

bool 把各種其它查詢通過 must (與)、 must_not (非)、 should (或)的方式進行組合

GET /winkto/_search {"query":{"bool": {"must": [{"match": {"title": "小米"}}],"must_not": [{"match": {"title": "華為"}}],"should": [{"match": {"title": "10"}}]}} } {"took": 2,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.5753642,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 0.5753642,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}}]} }

5.5.5、范圍查詢

GET /winkto/_search {"query":{"range": {"price": {"gte": 2000,"lte": 6000}}} } {"took": 4,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 3,"max_score": 1,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 1,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}},{"_index": "winkto","_type": "goods","_id": "kBFMWHsBy-koX7e_VW4W","_score": 1,"_source": {"title": "華為pro30","images": "http://image.lagou.com/12479122.jpg","price": 5699}},{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": 1,"_source": {"title": "小米華為plusplus","images": "http://image.lagou.com/12479122.jpg","price": 2699}}]} }

5.6、結果過濾

默認情況下,elasticsearch在搜索的結果中,會把文檔中保存在 _source 的所有字段都返回。但有時只想獲取其中的部分字段,此時可以添加 _source 的過濾

5.6.1、直接指定字段

GET /winkto/_search {"_source": ["title","price"], "query":{"match": {"title": "小米"}} } {"took": 9,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 0.2876821,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 0.2876821,"_source": {"price": 2699,"title": "小米10"}},{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": 0.2876821,"_source": {"price": 2699,"title": "小米華為plusplus"}}]} }

5.6.2、includes和excludes

  • includes:來指定想要顯示的字段
  • excludes:來指定不想要顯示的字段
GET /winkto/_search {"_source": {"includes": ["title","images"],"excludes": ["price"]}, "query":{"match": {"title": "小米"}} } {"took": 2,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 0.2876821,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 0.2876821,"_source": {"images": "http://image.lagou.com/12479122.jpg","title": "小米10"}},{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": 0.2876821,"_source": {"images": "http://image.lagou.com/12479122.jpg","title": "小米華為plusplus"}}]} }

5.6.3、Filter

GET /winkto/_search {"query":{"bool": {"must": [{"match": {"title": "小米"}}],"filter": {"range": {"price": {"gte": 1000,"lte": 3000}}}}} } {"took": 1,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 0.2876821,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 0.2876821,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}},{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": 0.2876821,"_source": {"title": "小米華為plusplus","images": "http://image.lagou.com/12479122.jpg","price": 2699}}]} }

如果一次查詢只有過濾,沒有查詢條件,不希望進行評分,可以使用 constant_score 取代只有 filter 語句的 bool 查詢

GET /winkto/_search {"query":{"constant_score": {"filter": {"range": {"price": {"gte": 1000,"lte": 3000}}}}} } {"took": 4,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 1,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 1,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}},{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": 1,"_source": {"title": "小米華為plusplus","images": "http://image.lagou.com/12479122.jpg","price": 2699}}]} }

5.7、排序

GET /winkto/_search {"query":{"match_all": {}},"sort": [{"price": {"order": "desc"}}] } {"took": 141,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 3,"max_score": null,"hits": [{"_index": "winkto","_type": "goods","_id": "kBFMWHsBy-koX7e_VW4W","_score": null,"_source": {"title": "華為pro30","images": "http://image.lagou.com/12479122.jpg","price": 5699},"sort": [5699]},{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": null,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699},"sort": [2699]},{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": null,"_source": {"title": "小米華為plusplus","images": "http://image.lagou.com/12479122.jpg","price": 2699},"sort": [2699]}]} }

5.8、分頁

GET /winkto/_search {"query":{"match_all": {}},"from": 0,"size": 2 } {"took": 5,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 3,"max_score": 1,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 1,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699}},{"_index": "winkto","_type": "goods","_id": "kBFMWHsBy-koX7e_VW4W","_score": 1,"_source": {"title": "華為pro30","images": "http://image.lagou.com/12479122.jpg","price": 5699}}]} }

5.9、高亮顯示

GET /winkto/_search {"query":{"match": {"title": "小米"}},"highlight": {"pre_tags": "<em>","post_tags": "</em>","fields": {"title": {}}} } {"took": 69,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 0.2876821,"hits": [{"_index": "winkto","_type": "goods","_id": "xqurVHsB1mHhNfuBSw0p","_score": 0.2876821,"_source": {"title": "小米10","images": "http://image.lagou.com/12479122.jpg","price": 2699},"highlight": {"title": ["<em>小米</em>10"]}},{"_index": "winkto","_type": "goods","_id": "kRFWWHsBy-koX7e_DW5_","_score": 0.2876821,"_source": {"title": "小米華為plusplus","images": "http://image.lagou.com/12479122.jpg","price": 2699},"highlight": {"title": ["<em>小米</em>華為plusplus"]}}]} }

5.10、聚合

聚合可以讓我們極其方便的實現對數據的統(tǒng)計、分析

  • 桶(group by):是按照某種方式對數據進行分組,每一組數據在ES中稱為一個 桶
  • 度量(聚合的結果):求平均值、最大、最小、求和等

預準備

PUT /car {"mappings": {"orders": {"properties": {"color": {"type": "keyword"},"make": {"type": "keyword"}}}} } POST /car/orders/_bulk { "index": {}} { "price" : 10000, "color" : "紅", "make" : "本田", "sold" : "2020-10-28" } { "index": {}} { "price" : 20000, "color" : "紅", "make" : "本田", "sold" : "2020-11-05" } { "index": {}} { "price" : 30000, "color" : "綠", "make" : "福特", "sold" : "2020-05-18" } { "index": {}} { "price" : 15000, "color" : "藍", "make" : "豐田", "sold" : "2020-07-02" } { "index": {}} { "price" : 12000, "color" : "綠", "make" : "豐田", "sold" : "2020-08-19" } { "index": {}} { "price" : 20000, "color" : "紅", "make" : "本田", "sold" : "2020-11-05" } { "index": {}} { "price" : 80000, "color" : "紅", "make" : "寶馬", "sold" : "2020-01-01" } { "index": {}} { "price" : 25000, "color" : "藍", "make" : "福特", "sold" : "2020-02-12" }

5.10.1、聚合為桶

GET /car/_search {"size": 0,"aggs": {"popular_colors": {"terms": {"field": "color"}}} } {"took": 48,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 8,"max_score": 0,"hits": []},"aggregations": {"popular_colors": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "紅","doc_count": 4},{"key": "綠","doc_count": 2},{"key": "藍","doc_count": 2}]}} }

5.10.2、聚合操作

GET /car/_search {"size": 0,"aggs": {"popular_colors": {"terms": {"field": "color"},"aggs": {"avg_price": {"avg": {"field": "price"}}}}} } {"took": 8,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 8,"max_score": 0,"hits": []},"aggregations": {"popular_colors": {"doc_count_error_upper_bound": 0,"sum_other_doc_count": 0,"buckets": [{"key": "紅","doc_count": 4,"avg_price": {"value": 32500}},{"key": "綠","doc_count": 2,"avg_price": {"value": 21000}},{"key": "藍","doc_count": 2,"avg_price": {"value": 20000}}]}} }

6、Elastic search集群

6.1、集群解決的問題

  • 單臺機器存儲容量有限,無法實現高存儲
  • 單服務器容易出現單點故障,無法實現高可用
  • 單服務的并發(fā)處理能力有限,無法實現高并發(fā)

6.2、數據分片

第一個問題就是數據量太大,單點存儲量有限的問題,可以把數據拆分成多份,每一份存儲到不同機器節(jié)點(node),從而實現減少每個節(jié)點數 據量的目的。這就是數據的分布式存儲,也叫做: 數據分片(Shard)

數據分片解決了海量數據存儲的問題,但是如果出現單點故障,那么分片數據就不再完整

給每個分片數據進行備 份,存儲到其它節(jié)點,防止數據丟失,這就是數據備份,也叫 數據副本(replica)

數據備份可以保證高可用,但是每個分片備份一份,所需要的節(jié)點數量就會翻一倍,成本實在是太高

為了在高可用和成本間尋求平衡,首先對數據分片,存儲到不同節(jié)點 然后對每個分片進行備份,放到對方節(jié)點,完成互相備份

6.3、集群搭建

node-0配置文件(node-1,node-2只需要修改node.name、http.port,transport.tcp.port,path.data,path.logs即可)

# ---------------------------------- Cluster ----------------------------------- # Use a descriptive name for your cluster: cluster.name: my-application # ------------------------------------ Node ------------------------------------ # Use a descriptive name for the node: node.name: node-0 # Add custom attributes to the node: #node.attr.rack: r1 # 是否可以為主節(jié)點 node.master: true # ----------------------------------- Paths ------------------------------------ # Path to directory where to store the data (separate multiple locations by comma): path.data: D:\es\elasticsearch-6.2.4-0\data # Path to log files: path.logs: D:\es\elasticsearch-6.2.4-0\data # ----------------------------------- Memory ----------------------------------- # Lock the memory on startup: #bootstrap.memory_lock: true # Make sure that the heap size is set to about half the memory available # on the system and that the owner of the process is allowed to use this # limit. # Elasticsearch performs poorly when the system is swapping the memory. # ---------------------------------- Network ----------------------------------- # Set the bind address to a specific IP (IPv4 or IPv6): network.host: 0.0.0.0 # Set a custom port for HTTP: http.port: 9200 # For more information, consult the network module documentation. # TCP協(xié)議對外端口 每個節(jié)點不一樣,默認:9300 transport.tcp.port: 9201 # --------------------------------- Discovery ---------------------------------- # Pass an initial list of hosts to perform discovery when new node is started: # The default list of hosts is ["127.0.0.1", "[::1]"] #discovery.zen.ping.unicast.hosts: ["host1", "host2"] # Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1): #discovery.zen.minimum_master_nodes: # For more information, consult the zen discovery module documentation. discovery.zen.ping.unicast.hosts: ["127.0.0.1:9201","127.0.0.1:9301","127.0.0.1:9401"] discovery.zen.minimum_master_nodes: 2 # ---------------------------------- Gateway ----------------------------------- # Block initial recovery after a full cluster restart until N nodes are started: #gateway.recover_after_nodes: 3 # For more information, consult the gateway module documentation. # ---------------------------------- Various ----------------------------------- # Require explicit names when deleting indices: #action.destructive_requires_name: true # ---------------------------------- Http ----------------------------------- #允許跨域名訪問 http.cors.enabled: true #當設置允許跨域,默認為*,表示支持所有域名 http.cors.allow-origin: "*"



創(chuàng)建索引winkto

PUT /winkto {"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"items":{"properties": {"id": {"type": "keyword"},"title":{"type": "text","analyzer": "ik_max_word"},"category":{"type": "keyword"},"brand": {"type": "keyword"},"images":{"type": "keyword","index": false},"price":{"type": "double"}}}} }

7、Elastic search API

預準備

PUT /winkto {"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"items":{"properties": {"id": {"type": "keyword"},"title":{"type": "text","analyzer": "ik_max_word"},"category":{"type": "keyword"},"brand": {"type": "keyword"},"images":{"type": "keyword","index": false},"price":{"type": "double"}}}} }

7.1、添加數據

導入依賴

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency><!--ES高級Rest Client--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>6.5.4</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>6.5.4</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency> </dependencies>

實體類

public class Product {private Long id;private String title;private String category;private String brand;private Double price;private String images; }

config

@Configuration public class WinktoConfig {@Beanpublic ObjectMapper jackson(){return new ObjectMapper();} }

測試

@SpringBootTest class ElasticSearchApplicationTests {@AutowiredObjectMapper jackson;@Testvoid contextLoadsinsert() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));// 文檔數據Product product = new Product(1L,"華為P50、新款發(fā)布","手機","華為",5999.9,"http://image.huawei.com/1.jpg");IndexRequest indexRequest = new IndexRequest("winkto", "items", product.getId().toString());indexRequest.source(jackson.writeValueAsString(product), XContentType.JSON);IndexResponse response = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);System.out.println(response);// 關閉客戶端restHighLevelClient.close();} }

結果

IndexResponse[index=winkto,type=items,id=1,version=3,result=created,seqNo=2,primaryTerm=1,shards={"total":2,"successful":2,"failed":0}]

7.2、查詢數據

@Test void contextLoadsSelect() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));GetRequest getRequest = new GetRequest("winkto","items","1");GetResponse documentFields = restHighLevelClient.get(getRequest,RequestOptions.DEFAULT);String sourceAsString = documentFields.getSourceAsString();Product product = jackson.readValue(sourceAsString, Product.class);System.out.println(product.toString());// 關閉客戶端restHighLevelClient.close(); } Product{id=1, title='華為P50、新款發(fā)布', category='手機', brand='華為', price=5999.9, images='http://image.huawei.com/1.jpg'}

7.3、修改文檔

新增時,如果傳遞的id是已經存在的,則會完成修改操作,如果不存在,則是新增

7.4、刪除文檔

@Test void contextLoadsDelete() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));DeleteRequest deleteRequest = new DeleteRequest("winkto", "items", "1");DeleteResponse delete = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);// 關閉客戶端restHighLevelClient.close(); }

7.5、match_all

@Test void contextLoadsMatchAll() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));SearchRequest searchRequest = new SearchRequest();SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchAllQuery());searchRequest.source(searchSourceBuilder);SearchResponse search = restHighLevelClient.search(searchRequest);SearchHits hits = search.getHits();SearchHit[] hits1 = hits.getHits();for (SearchHit documentFields : hits1) {String sourceAsString = documentFields.getSourceAsString();Product product = jackson.readValue(sourceAsString, Product.class);System.out.println(product);}// 關閉客戶端restHighLevelClient.close(); }

7.6、match

@Test void contextLoadsMatch() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));SearchRequest searchRequest = new SearchRequest();SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchQuery("title","新款"));searchRequest.source(searchSourceBuilder);SearchResponse search = restHighLevelClient.search(searchRequest);SearchHits hits = search.getHits();SearchHit[] hits1 = hits.getHits();for (SearchHit documentFields : hits1) {String sourceAsString = documentFields.getSourceAsString();Product product = jackson.readValue(sourceAsString, Product.class);System.out.println(product);}// 關閉客戶端restHighLevelClient.close(); }

7.7、range

@Test void contextLoadsRange() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));SearchRequest searchRequest = new SearchRequest();SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.rangeQuery("price").gt(2000).lt(4000));searchRequest.source(searchSourceBuilder);SearchResponse search = restHighLevelClient.search(searchRequest);SearchHits hits = search.getHits();SearchHit[] hits1 = hits.getHits();for (SearchHit documentFields : hits1) {String sourceAsString = documentFields.getSourceAsString();Product product = jackson.readValue(sourceAsString, Product.class);System.out.println(product);}// 關閉客戶端restHighLevelClient.close(); }

7.8、source過濾

默認情況下,索引庫中所有數據都會返回,如果我們想只返回部分字段,可以通過source filter來控制

@Test void contextLoadsSource() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));SearchRequest searchRequest = new SearchRequest();SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.rangeQuery("price").gt(2000).lt(4000));// 第一個參數想要包含的字段,第二個參數不想要包含的字段searchSourceBuilder.fetchSource(new String[]{"title","price"},null);searchRequest.source(searchSourceBuilder);SearchResponse search = restHighLevelClient.search(searchRequest);SearchHits hits = search.getHits();SearchHit[] hits1 = hits.getHits();for (SearchHit documentFields : hits1) {String sourceAsString = documentFields.getSourceAsString();Product product = jackson.readValue(sourceAsString, Product.class);System.out.println(product);}// 關閉客戶端restHighLevelClient.close(); }

7.9、排序

@Test void contextLoadsSort() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));SearchRequest searchRequest = new SearchRequest();SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.rangeQuery("price").gt(2000).lt(4000));// 降序排序searchSourceBuilder.sort("price", SortOrder.DESC);searchRequest.source(searchSourceBuilder);SearchResponse search = restHighLevelClient.search(searchRequest);SearchHits hits = search.getHits();SearchHit[] hits1 = hits.getHits();for (SearchHit documentFields : hits1) {String sourceAsString = documentFields.getSourceAsString();Product product = jackson.readValue(sourceAsString, Product.class);System.out.println(product);}// 關閉客戶端restHighLevelClient.close(); }

7.10、分頁

@Test void contextLoadsSort() throws IOException {// 初始化HighLevel客戶端RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200),new HttpHost("127.0.0.1",9300),new HttpHost("127.0.0.1",9400)));SearchRequest searchRequest = new SearchRequest();SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchAllQuery());// 降序排序searchSourceBuilder.sort("price", SortOrder.DESC);//searchSourceBuilder.from(0);searchSourceBuilder.size(2);searchRequest.source(searchSourceBuilder);SearchResponse search = restHighLevelClient.search(searchRequest);SearchHits hits = search.getHits();SearchHit[] hits1 = hits.getHits();for (SearchHit documentFields : hits1) {String sourceAsString = documentFields.getSourceAsString();Product product = jackson.readValue(sourceAsString, Product.class);System.out.println(product);}// 關閉客戶端restHighLevelClient.close(); }

8、Spring Data Elastic search

Spring Data 的使命是給各種數據訪問提供統(tǒng)一的編程接口,不管是關系型數據庫(如MySQL),還是 非關系數據庫(如Redis),或者類似Elasticsearch這樣的索引數據庫。從而簡化開發(fā)人員的代碼,提 高開發(fā)效率。

  • 支持Spring的基于 @Configuration 的java配置方式,或者XML配置方式
  • 提供了用于操作ES的便捷工具類 ElasticsearchTemplate 。包括實現文檔到POJO之間的自動智能映射
  • 利用Spring的數據轉換服務實現的功能豐富的對象映射
  • 基于注解的元數據映射方式,而且可擴展以支持更多不同的數據格式,可以定義JavaBean:類名、屬性
  • 根據持久層接口自動生成對應實現方法,無需人工編寫基本操作代碼(類似mybatis,根據接口自 動得到實現)。當然,也支持人工定制查詢

8.1、創(chuàng)建索引庫

導入依賴

<dependencies><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> </dependencies> @Document(indexName = "winkto", type = "product", shards = 3, replicas = 1) public class Product {@Idprivate Long id;@Field(type = FieldType.Text,analyzer = "ik_max_word")private String title;@Field(type = FieldType.Keyword)private String category;@Field(type = FieldType.Keyword)private String brand;@Field(type = FieldType.Double)private Double price;@Field(type = FieldType.Keyword)private String images; } @SpringBootTest class EsDataApplicationTests {@Autowiredprivate ElasticsearchTemplate elasticsearchTemplate;@Testvoid contextLoadsIndex() {elasticsearchTemplate.createIndex(Product.class);} }

application.yaml

spring:data:elasticsearch:cluster-name: my-applicationcluster-nodes: 127.0.0.1:9201,127.0.0.1:9301,127.0.0.1:9401


8.2、創(chuàng)建類型映射

@Test void contextLoadsMapping() {elasticsearchTemplate.putMapping(Product.class); }

8.3、索引數據CRUD

添加數據(單條)

@Test void contextLoadsInsert() {Product product = new Product(1L, "小米手機7", "手機", "小米", 3299.00, "/13123.jpg");productMapper.save(product); }


添加數據(多條)

@Test void contextLoadsInsertAll() {List<Product> list = new ArrayList<>();list.add(new Product(2L, "堅果手機R1", "手機", "錘子", 3699.00, "/13123.jpg"));list.add(new Product(3L, "華為META10", "手機", "華為", 4499.00, "/13123.jpg"));list.add(new Product(4L, "小米Mix2S", "手機", "小米", 4299.00, "/13123.jpg"));list.add(new Product(5L, "榮耀V10", "手機", "華為", 2799.00, "/13123.jpg"));productMapper.saveAll(list); }


根據id查詢

@Test void contextLoadsSelect() {Optional<Product> optionalProduct = productMapper.findById(1L);System.out.println(optionalProduct.orElse(null)); }

查詢所有

@Test void contextLoadsSelectAll() {Iterable<Product> all = productMapper.findAll();all.forEach(System.out::println); }

根據id刪除

@Test void contextLoadsDelete() {productMapper.deleteById(1L); } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Java微服务篇4——Elastic search的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

成人四虎影院 | 91成人免费| 欧美精品生活片 | 欧美精品日韩 | 亚洲最大av网站 | 久久视频在线观看中文字幕 | 中文字幕资源网 国产 | 天天色天 | 国产精品9999 | 91av视频在线观看免费 | 视频一区在线播放 | 黄色成人毛片 | 午夜影院在线观看18 | 国产免费小视频 | 精品国产免费人成在线观看 | 久久久亚洲电影 | 91麻豆精品国产 | 开心婷婷色 | 国产a级片免费观看 | 亚洲免费小视频 | 久久久久欠精品国产毛片国产毛生 | 九九久久精品 | 看片网站黄色 | 久草在线视频在线观看 | 992tv在线成人免费观看 | 日日干天夜夜 | 久久激情日本aⅴ | 国产福利免费在线观看 | 女人18毛片a级毛片一区二区 | 玖玖爱免费视频 | 国产福利午夜 | 精品欧美一区二区在线观看 | 日韩激情中文字幕 | 中文字幕在线观看的网站 | 国产综合在线观看视频 | 亚洲国产99 | 国产日产精品一区二区三区四区的观看方式 | 亚色视频在线观看 | 在线免费视频 你懂得 | 午夜在线免费视频 | 五月天婷亚洲天综合网精品偷 | 国产色综合天天综合网 | 夜夜操天天 | 欧美精品成人在线 | 热久久视久久精品18亚洲精品 | 天天操天天干天天 | 黄色91在线| 国产精品久久久久久欧美 | 干干日日 | 日韩女同一区二区三区在线观看 | 亚洲日本黄色 | 九热精品 | 最新在线你懂的 | 国产精品一区二区精品视频免费看 | 美女视频黄,久久 | 成人97人人超碰人人99 | 国产精品久久久网站 | 东方av在线免费观看 | 四虎成人在线 | 91高清免费看 | 综合色中色 | 免费日韩一区二区三区 | av东方在线 | 亚洲v欧美v国产v在线观看 | 在线有码中文 | 丁香影院在线 | 成人在线视频论坛 | 国产成人精品在线 | 日韩在线视 | 日韩免费一级a毛片在线播放一级 | 国产精品免费一区二区三区 | 综合影视| 99精品视频在线 | 国产午夜精品一区二区三区嫩草 | 国产亚洲资源 | 五月婷综合网 | 97视频网址| 国产精品免费看久久久8精臀av | 国产免费久久 | 欧美另类高清 | 在线免费观看麻豆视频 | 51精品国自产在线 | 国产视频在线观看一区 | 亚洲精品永久免费视频 | 在线电影91 | 美女黄视频免费看 | 日韩电影中文字幕在线观看 | 久久精品8| 久久久久久毛片精品免费不卡 | 91视频链接 | 天天操天天色综合 | 免费在线激情视频 | 九色porny真实丨国产18 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 99久久这里有精品 | 五月激情站 | 国产高清av | 51久久成人国产精品麻豆 | 亚洲在线a| 丁香花在线观看视频在线 | 中文字幕在线影院 | 成人一区在线观看 | 成人一级| 欧美日韩不卡一区二区三区 | 欧美 日韩 国产 中文字幕 | 国产成人久久av977小说 | 激情偷乱人伦小说视频在线观看 | 国产成人综合图片 | 黄色的网站免费看 | 波多野结衣在线视频一区 | 天堂视频一区 | av黄网站| 国产精品一区专区欧美日韩 | 亚洲国产午夜精品 | 一区二区在线影院 | 国产亚洲精品久久久久久电影 | 色姑娘综合网 | 黄色网中文字幕 | 岛国av在线免费 | 色老板在线 | 四虎在线观看精品视频 | 中文在线中文资源 | 热久久这里只有精品 | 欧美日韩免费观看一区二区三区 | 日韩 在线观看 | 中文字幕日韩电影 | 国产精品高清在线观看 | 波多野结衣一区二区三区中文字幕 | 黄色不卡av | 国产精品中文在线 | 国产精品刺激对白麻豆99 | 久草视频免费 | 三级a视频 | 91高清完整版在线观看 | 中文字幕91视频 | 奇米777777 | 久久久久一区二区三区四区 | 免费av在线网 | 亚洲国产精品va在线 | 国产精品免费久久久久影院仙踪林 | 国产精品一区在线观看你懂的 | 精品在线一区二区三区 | 欧美激情精品久久久久久变态 | 992tv在线成人免费观看 | 五月天久久久 | 一区二区三区在线免费观看 | 亚洲精品在线播放视频 | 亚洲视频免费在线观看 | 又污又黄网站 | av福利第一导航 | 亚洲乱码在线 | 97人人视频 | 亚洲国产中文字幕在线 | 国产综合激情 | 国产精品精品久久久久久 | 国产精品激情偷乱一区二区∴ | 亚洲a在线观看 | 国产91学生| 国产99久久久国产精品免费二区 | 在线观看成年人 | 久久亚洲人 | 国产成人一区二区三区在线观看 | 成人超碰在线 | 韩国av一区二区三区在线观看 | 狠狠色丁香婷婷综合久久片 | 欧美性久久久久久 | 午夜影院在线观看18 | 日韩av在线资源 | 久久久久国产精品厨房 | 视频一区二区视频 | av免费在线观看1 | 在线黄频| 久久免费影院 | 在线日韩中文字幕 | 免费进去里的视频 | 91视频在线免费 | 97国产精品亚洲精品 | 天天插日日射 | 日韩成人黄色av | 色资源网免费观看视频 | 欧美在线视频一区二区 | 黄色午夜网站 | 国产精品久久免费看 | 韩国av在线播放 | 国产一卡在线 | 黄av资源 | 日韩午夜在线 | 日本不卡一区二区三区在线观看 | 午夜私人影院久久久久 | 亚洲少妇久久 | 在线观看亚洲国产精品 | 精品1区2区3区 | 黄色av免费看 | 日本不卡一区二区三区在线观看 | 九九色网| 热久久免费国产视频 | 久久99网| 欧美成人999 | 九九热视频在线播放 | 日日夜夜免费精品 | 精品人人人 | 国产精品久久久一区二区 | 欧美日韩国产二区三区 | 91久久丝袜国产露脸动漫 | 亚洲一级在线观看 | 91网站在线视频 | 在线观看亚洲精品 | 亚洲老妇xxxxxx | 九九免费观看全部免费视频 | 国产69精品久久久久久久久久 | 激情五月五月婷婷 | 国产伦精品一区二区三区无广告 | 精品久久久久久久久久久院品网 | 日日干综合 | 一区二区三区av在线 | 亚洲精品在线国产 | 国产午夜在线观看 | 亚洲第五色综合网 | 精品亚洲欧美无人区乱码 | 国内视频在线 | 在线观看免费日韩 | 日韩视频中文字幕在线观看 | 97在线观看免费高清完整版在线观看 | av电影免费在线看 | 2021av在线| 色偷偷中文字幕 | 久久久免费毛片 | 亚洲精品成人av在线 | 国产精品原创在线 | 91视频 - 88av| 久久九九影院 | 日本中文字幕免费观看 | 综合色婷婷 | 日韩欧美一区二区三区视频 | 18久久久久久 | 国产精品色在线 | 精品中文字幕在线播放 | 国产精品成人一区二区三区吃奶 | 福利一区二区三区四区 | 一级片免费观看 | 日韩一区在线免费观看 | 色网站中文字幕 | 天堂v中文 | 天天色天天干天天 | 国产亚洲久一区二区 | 欧美性生活一级片 | 色一色在线 | 热精品 | 中文字幕在线观看第一页 | 日本久久精品视频 | avav片| 国产精品久久99综合免费观看尤物 | 久久久国产精品成人免费 | 18久久久久久| 一区二区三高清 | 福利网在线| 深夜免费福利视频 | 国产在线观看你懂得 | 久久精彩 | 亚洲欧洲日韩在线观看 | 国产高清99| 国产精品一区二区免费 | 亚洲精品久久久久久久蜜桃 | 91精品国产自产在线观看 | 黄色aa久久| 免费日韩 精品中文字幕视频在线 | 9999精品视频 | 91在线观看高清 | 亚洲婷婷综合色高清在线 | 一级免费片 | 国产美女永久免费 | 超碰97国产在线 | 91视频在线免费 | 99热都是精品 | 狠狠狠色狠狠色综合 | 日韩欧美一级二级 | 99久久激情视频 | av中文字幕在线免费观看 | a在线观看视频 | 色婷婷免费视频 | 国产一区国产二区在线观看 | 国内久久视频 | 五月宗合网 | 日韩久久一区二区 | 黄色大片免费播放 | 美女福利视频在线 | 欧美性极品xxxx娇小 | 亚洲国产精品视频 | 日韩视频在线不卡 | 国产手机在线观看 | 天堂久久电影网 | 黄色影院在线播放 | 亚洲精品视频中文字幕 | 欧洲精品在线视频 | 久久手机免费观看 | 丁香婷婷激情网 | 国产亚洲精品久久久久久久久久久久 | 免费三级影片 | 成人免费一级 | 911久久香蕉国产线看观看 | 免费看片网站91 | 中文字幕免费成人 | 成人在线观看资源 | 操操碰| 亚洲综合爱| 99久久精品无码一区二区毛片 | 色七七亚洲影院 | 2024av| 久久电影国产免费久久电影 | 久久人人爽人人片 | 国产精品久久久久影视 | 国产精品成人自拍 | 欧美做受高潮电影o | 日本公妇色中文字幕 | 黄色aaaaa | 国产中文字幕第一页 | 国产精品国产毛片 | 久草视频免费观 | 中文字幕在线国产 | 久久精品视频在线看 | 亚洲a成人v | 久久综合婷婷国产二区高清 | 日韩免费一区 | 欧美成人精品在线 | 亚洲第一伊人 | 韩国av永久免费 | 美女视频永久黄网站免费观看国产 | 国产精品久久久久久一区二区 | 亚洲免费视频在线观看 | 亚洲天堂在线观看完整版 | 久久久久国产视频 | 精品国产_亚洲人成在线 | 欧美日韩在线看 | 欧美色噜噜噜 | 日日爱999 | 欧美精品亚洲精品日韩精品 | 91天堂影院 | 探花视频在线观看免费版 | 欧美精品一区二区在线观看 | 国产91av视频在线观看 | 国产一区在线免费 | 天天色天天射天天干 | 又黄又刺激的网站 | 色爽网站 | 久草在线观看视频免费 | 少妇bbw搡bbbb搡bbb | 一色屋精品视频在线观看 | 欧美日本不卡 | 天堂av在线中文在线 | 91久久久久久久 | av电影中文字幕在线观看 | 国产精品久久久久久久7电影 | 欧美性色黄大片在线观看 | 菠萝菠萝蜜在线播放 | 狠狠操精品| 久久不射电影网 | 9i看片成人免费看片 | 视频在线91| 十八岁以下禁止观看的1000个网站 | 午夜性生活 | 狠狠的干狠狠的操 | 在线 国产 日韩 | 日韩欧美精品一区二区三区经典 | 中文在线 | 天天干干 | 精品国内 | 国产精品久久久久久妇 | 国产一级免费在线 | 一区二区中文字幕在线播放 | 九九热有精品 | 久久成人国产精品 | 免费网站在线观看成人 | 亚洲视频精选 | 懂色av一区二区在线播放 | 免费高清在线观看电视网站 | 国产精品国产三级国产专区53 | 在线播放视频一区 | 久久人人爽 | 国产精品中文字幕在线观看 | 最近中文字幕高清字幕免费mv | 久久精品国产免费观看 | 久久伊人操 | 不卡的av在线 | 国产 成人 久久 | 视频1区2区 | 国产精品成人一区二区 | 国产美女永久免费 | 91精品欧美一区二区三区 | 亚洲一区二区三区miaa149 | 九九在线播放 | 国产精品久久二区 | 久草在线视频国产 | 日韩在线无 | 人人澡人人模 | 91av在线不卡 | 国产在线色 | 99在线观看免费视频精品观看 | 少妇性xxx| 久久伊人爱 | 99久久免费看 | 麻花天美星空视频 | 99国产成+人+综合+亚洲 欧美 | 激情五月婷婷综合网 | 国产精品久久久久久久久搜平片 | 黄色app网站在线观看 | 亚洲在线精品视频 | 国产又粗又猛又黄又爽 | 日日干天天爽 | 欧美精品色| 深夜福利视频在线观看 | 成人av电影网址 | 国产精品videossex国产高清 | 久久69av | 欧美日韩精品影院 | 国产精品99久久久久久久久久久久 | 午夜国产福利在线观看 | 日日干av | a色网站| 99精品亚洲 | 国产黄a三级三级三级三级三级 | 亚洲国产日韩精品 | 色综合久久综合 | 午夜国产在线观看 | 91激情视频在线观看 | 波多野结衣一区二区三区中文字幕 | 国产精品欧美日韩在线观看 | 亚洲黄色小说网址 | 亚洲欧美国产日韩在线观看 | 另类老妇性bbwbbw高清 | 久久人人爽人人爽人人片av软件 | 亚洲精品麻豆视频 | 精品国产电影一区 | 在线观看视频一区二区 | 丁香在线 | 人人添人人| 美女福利视频网 | 毛片视频电影 | 日韩免费观看一区二区 | 91中文字幕在线 | 五月婷婷色综合 | 伊人狠狠色丁香婷婷综合 | 婷婷六月天天 | av片在线观看 | 婷婷激情综合五月天 | 天天射天天干天天插 | 97涩涩视频| 色在线免费观看 | 欧美日韩中文另类 | 丁香5月婷婷 | 午夜电影 电影 | 精品一区二区三区在线播放 | 亚洲激情在线观看 | 久免费视频 | 91av免费观看 | 四虎在线视频 | 国产精品久久久久久久99 | 日韩久久精品一区二区 | 久久精品免费电影 | 国产成人一二片 | 国产高清 不卡 | 色a网| 亚洲精品乱码白浆高清久久久久久 | 一二三区在线 | 最新国产一区二区三区 | 91麻豆精品国产自产 | 久久免费国产精品 | 午夜久久久久久久久久久 | 日韩欧美久久 | 亚洲永久精品一区 | 天堂av在线免费 | 国产精品亚洲片夜色在线 | 在线精品一区二区 | 欧美日韩亚洲精品在线 | 久久视频在线观看免费 | 成人免费观看大片 | 久久久久免费 | 91免费观看| 天天草网站 | 欧美日韩中文字幕综合视频 | 久久精品2| 久久国语露脸国产精品电影 | 亚洲人成人在线 | 综合激情伊人 | 狠色狠色综合久久 | 久久久www成人免费毛片 | 久久精品亚洲 | 久久综合精品国产一区二区三区 | 国产裸体视频网站 | 成人av资源网站 | 精品乱码一区二区三四区 | 天天伊人狠狠 | 一级国产视频 | 日韩精品一区二区三区在线视频 | 在线观看日本韩国电影 | 91亚洲狠狠婷婷综合久久久 | 精品嫩模福利一区二区蜜臀 | 天天操天天干天天摸 | 黄色国产成人 | 探花视频在线版播放免费观看 | 国产视频资源 | 精品国产一区二区三区四 | 涩涩网站在线 | 麻豆精品国产传媒 | 国产精品video爽爽爽爽 | 国内精品在线看 | 色诱亚洲精品久久久久久 | 99在线观看免费视频精品观看 | 亚洲免费不卡 | 国产精品免费不卡 | 精品久久影院 | 亚洲三级精品 | 日韩电影在线一区二区 | a天堂中文在线 | 亚洲人精品午夜 | 91精品久久久久久综合乱菊 | 精品视频久久 | 人人爽人人香蕉 | 高清视频一区二区三区 | 九九热在线精品 | 1000部国产精品成人观看 | 精品国产欧美一区二区三区不卡 | 欧美 日韩 视频 | 色婷婷影视 | 日本最新一区二区三区 | 日韩精品一区二区三区中文字幕 | 在线一区二区三区 | 国产一级高清视频 | 国产精品亚洲精品 | 亚洲清纯国产 | 欧美日韩国产精品一区 | 天天色天天骑天天射 | 中文超碰字幕 | 成人av在线直播 | 国产精选视频 | 成人avav| 91中文字幕一区 | 免费欧美精品 | 美国av片在线观看 | 91大神一区二区三区 | 久久99国产精品免费 | 亚洲欧美日韩精品久久久 | 成人免费观看视频网站 | 天天色天 | 免费观看91 | 免费成人短视频 | 久久精品国产99 | 日韩电影一区二区在线观看 | 精品国产亚洲在线 | 婷婷色在线观看 | 日韩免费电影网站 | 中文有码在线 | 国产精品丝袜在线 | 国产剧情一区在线 | 中文视频一区二区 | 午夜精品999 | 成片免费观看视频999 | 最近日本韩国中文字幕 | 中国一级片在线 | 在线观看黄色小视频 | 久久神马影院 | 不卡电影一区二区三区 | 久久视频免费 | 久久国产精品一二三区 | 欧美另类xxxxx | 蜜桃av久久久亚洲精品 | 九九热中文字幕 | av免费线看 | 国产精品淫 | 能在线观看的日韩av | 91精品婷婷国产综合久久蝌蚪 | 国产无吗一区二区三区在线欢 | 91精品久久久久久久91蜜桃 | 国产精品久久久久aaaa九色 | 久久久免费观看视频 | 最近中文字幕免费大全 | 成人黄色在线电影 | www久久久 | 日本黄色一级电影 | 久久久久成人精品亚洲国产 | 婷婷综合 | 成人在线免费看视频 | 91成人网在线观看 | 免费在线| 天天爱天天干天天爽 | 久久久久久久久久久久影院 | 麻豆视频在线看 | 国产一区在线免费 | 人人搞人人干 | 丁香久久 | 97香蕉超级碰碰久久免费软件 | 欧美91在线 | 日韩欧美精品在线 | 久久亚洲福利视频 | 久久精品aaa | 日韩精品一区二区三区不卡 | 中文字幕 影院 | av电影在线观看完整版一区二区 | 婷婷在线视频 | 日韩免费播放 | 亚洲一区二区黄色 | 久热超碰 | 亚洲高清视频在线观看免费 | 亚洲国产小视频在线观看 | 国产高清日韩欧美 | 精品国产综合区久久久久久 | 欧美性护士 | 久草免费在线观看视频 | 国产午夜精品av一区二区 | 国产高清免费av | 欧美色就是色 | 中文字幕第一 | 人人澡人人添人人爽一区二区 | 2019中文最近的2019中文在线 | 国产福利在线免费 | 一本一本久久aa综合精品 | www免费网站在线观看 | a爱爱视频| 在线观看精品黄av片免费 | 九九综合九九 | 国产韩国精品一区二区三区 | 成人欧美亚洲 | 免费看三级网站 | 久久精品电影网 | 日日操日日干 | 免费日韩一级片 | 夜夜操狠狠干 | 免费国产一区二区视频 | 日韩高清精品一区二区 | 欧美久久久久久久久久久久久 | 国产黄色特级片 | 成年人在线观看视频免费 | 操操碰| 欧美日韩不卡一区二区 | 99国产免费网址 | 中文字幕一区二区三区乱码在线 | 91九色免费视频 | 色com| 午夜久久网 | 久久精品99国产国产精 | 免费精品国产va自在自线 | 91在线精品观看 | 免费色av | 一区中文字幕在线观看 | 天天操天天草 | 96精品视频 | 国产中文字幕视频在线观看 | 中文字幕一区二区三区四区久久 | 天天色天天骑天天射 | 中文区中文字幕免费看 | 久久视屏网 | 久久精品中文视频 | 亚洲综合激情小说 | 亚洲成人精品影院 | 久久久国产精品麻豆 | 91成人在线视频观看 | 国产福利免费看 | 日本99久久 | 色婷婷88av视频一二三区 | 在线亚洲观看 | 狠狠狠色丁香婷婷综合久久88 | 久久久婷 | 国产黄色av| 中文一区二区三区在线观看 | 免费黄色a级毛片 | 国产a免费 | 国产精品高清免费在线观看 | 色资源网免费观看视频 | 久久久69 | 日韩精选在线观看 | 精品久久久久久久久久岛国gif | 久久久久亚洲精品成人网小说 | 久久久久久久国产精品影院 | 97超在线视频 | 国产亚洲小视频 | 免费大片av | 在线观看视频你懂 | 日韩一级片网址 | 久久99精品久久久久久久久久久久 | 六月天综合网 | 亚洲精品久久久久中文字幕二区 | 亚洲免费在线 | 最近中文字幕完整视频高清1 | 一本一本久久a久久精品综合妖精 | 日韩欧美视频免费在线观看 | 免费看的黄色 | 国产精品毛片久久 | 亚洲小视频在线 | 亚洲精品播放 | 69久久99精品久久久久婷婷 | 欧美天天综合网 | 久久99精品国产麻豆宅宅 | 少妇性色午夜淫片aaaze | 丁香婷婷综合激情 | 青青草国产精品 | 亚洲午夜久久久影院 | 麻豆91精品视频 | 久久久国产精品人人片99精片欧美一 | 人人插人人费 | 在线观看爱爱视频 | 亚洲理论在线观看 | 婷婷成人综合 | 91丨精品丨蝌蚪丨白丝jk | 天天色天天操综合网 | 成人黄色资源 | 狂野欧美激情性xxxx欧美 | 久久国产精品影片 | www狠狠 | 91完整视频| 全久久久久久久久久久电影 | 麻豆91网站| 国产女v资源在线观看 | 天天色中文 | 在线日本看片免费人成视久网 | 日韩欧美区 | 伊人色综合久久天天网 | 日本精品视频在线观看 | 一本一本久久a久久精品综合妖精 | 久久久国产精品人人片99精片欧美一 | 麻豆免费在线视频 | 中文字幕在线观看av | 国内视频1区 | 黄色亚洲 | 免费视频国产 | 最新午夜电影 | 欧美另类视频 | 日本久久99 | 亚洲综合色婷婷 | www.人人草| av电影在线免费观看 | 久久国产精品一区二区三区四区 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 色综合久久五月天 | 天天拍天天爽 | 人人爽人人澡 | 午夜黄色大片 | 国产精品久久久久久久毛片 | 中文字幕视频网站 | 欧美日韩一区三区 | 成人黄色免费观看 | 天天色天天操天天爽 | 99re8这里有精品热视频免费 | 欧美少妇xxxxxx | 久久精品国产一区二区 | 国内99视频 | 久久99国产精品免费网站 | 在线观看免费成人 | 亚洲精品在线观看中文字幕 | 免费在线色 | 97精品国产91久久久久久 | 国产手机视频在线 | 在线视频 区 | 97精产国品一二三产区在线 | 日韩视频二区 | 久久99九九99精品 | 日日夜夜狠狠干 | 中文在线a在线 | 久久视频在线免费观看 | 视频 天天草| av日韩国产| 国产精品久久影院 | 四虎永久免费在线观看 | 欧美性黑人 | 久久超级碰 | 亚洲综合成人专区片 | 丁香电影小说免费视频观看 | 91香蕉视频黄色 | 日本女人b | 中文字幕一区二区三区久久蜜桃 | 91精品影视| 二区中文字幕 | 午夜美女av | 亚洲 欧美 变态 国产 另类 | av大片免费在线观看 | 国产精品理论片在线播放 | 国产精品久久在线观看 | 黄色免费观看网址 | 日本巨乳在线 | 九九在线高清精品视频 | 亚洲欧洲精品一区 | 91黄色小视频 | 亚洲激精日韩激精欧美精品 | 久久成人精品视频 | 福利一区二区三区四区 | 亚洲精品午夜久久久久久久 | 日韩精品aaa| 国产亚洲精品福利 | 少妇bbw揉bbb欧美 | 国产一区二区在线免费播放 | 狠狠操夜夜 | 免费观看成人网 | 五月婷婷香蕉 | 免费亚洲精品 | 久草在线免费新视频 | 欧美成人精品三级在线观看播放 | a√天堂中文在线 | 伊人色**天天综合婷婷 | 在线观看成人毛片 | 91在线最新 | 97偷拍在线视频 | 天天色成人 | 午夜在线国产 | 99热只有精品在线观看 | 九九热国产视频 | 国产一级片免费播放 | 天天天天天操 | 探花视频在线观看 | 天天草天天干天天 | 国产成人精品在线 | 国产精彩在线视频 | 久久久久女人精品毛片九一 | 久久色视频 | 日韩精品一区二区在线观看 | 中文字幕在线播放第一页 | 天天色天天干天天色 | 日韩av中文在线观看 | 国产亚洲片| 久草在线国产 | 色婷婷五 | 欧美十八 | 五月婷婷欧美 | 婷婷六月中文字幕 | 成人久久久久久久久 | 免费视频成人 | 在线看片视频 | 超碰在线97免费 | 国产福利91精品一区二区三区 | 九九天堂 | 中文字幕一区在线观看视频 | 亚洲黄色一级电影 | 亚洲在线不卡 | 青青网视频 | 中文字幕一区在线观看视频 | 精品麻豆 | 久久国产综合视频 | 五月婷久久 | 久久久久免费看 | 久久只精品99品免费久23小说 | 激情久久综合 | 成人午夜黄色 | 人人干免费 | 福利视频入口 | 人成午夜视频 | 国产亚洲字幕 | 中文字幕 国产视频 | 久久精品一区二区三区中文字幕 | 五月婷婷深开心 | 午夜精品久久久久久久99 | 欧美性大战| 久久免费国产 | 顶级bbw搡bbbb搡bbbb | 国产午夜精品理论片在线 | v片在线看| 在线免费黄网站 | 国产又粗又猛又爽 | 欧美日韩精品在线播放 | 九九亚洲视频 | 国产精品综合av一区二区国产馆 | 欧美人人 | 日韩精品在线看 | 热久久免费视频精品 | 国产一区在线免费 | 免费在线观看午夜视频 | 视频一区二区视频 | 久久精品久久精品久久 | 久久高清免费观看 | 一二三精品视频 | 欧美性另类 | 精品产品国产在线不卡 | 日韩免费看片 | 免费人成在线观看网站 | av青草 | 亚洲精品久久久久久久蜜桃 | 欧美精品免费一区二区 | 91亚洲精品久久久久图片蜜桃 | 一本色道久久精品 | 国产在线专区 | 亚洲天天 | 极品美女被弄高潮视频网站 | 在线视频免费观看 | 天天综合网久久 | 天天曰天天 | 亚洲精品国产区 | 天堂av观看 | 91精品在线播放 | 91免费看片黄| 91香蕉视频色版 | 综合精品在线 | av观看网站 | 亚洲情感电影大片 | 五月天,com | 天天操天天干天天操天天干 | 欧美综合色在线图区 | 国产原创在线视频 | 免费观看www小视频的软件 | 色香蕉视频 | 三级小视频在线观看 | 91大神精品视频在线观看 | 黄色特一级 | 亚洲天堂精品视频 | 国产又粗又长又硬免费视频 | 欧美老女人xx| 日韩av手机在线观看 | 美女视频黄色免费 | 波多野结衣视频网址 | 欧美一级免费黄色片 | 久久香蕉影视 | 在线看国产 | 韩国av在线播放 | 在线只有精品 | 97爱| 日韩免费视频一区二区 | 免费精品在线 | 在线不卡a | 日韩免费b| 国内精品久久久久久久久 | 久久中文字幕视频 | 日韩免费av片 | 人人爽久久涩噜噜噜网站 | 亚洲精品视 | 黄色资源网站 | 深爱激情五月网 | 黄色av电影在线观看 | 国产亚洲va综合人人澡精品 | 伊人影院99| 日韩在线观看的 | 欧美日韩在线精品 | 日本久久成人中文字幕电影 | 国产99久久久久 | 91成人在线看 | 欧美日韩伦理在线 | 国产精品久久 | 亚洲成人家庭影院 | aaa亚洲精品一二三区 | 亚洲精品国产精品国自产观看浪潮 | 国产精品久久久亚洲 | 天天操天天干天天插 | 五月天婷婷丁香花 | 国产97av| 一级全黄毛片 | 免费日韩 精品中文字幕视频在线 | 蜜臀久久99精品久久久久久网站 | 黄色www免费 | 亚洲精品黄 | 国产精品九九九九九 | 久久高清视频免费 | 国产美女视频一区 | 91中文字幕在线视频 | 国产中文字幕视频在线观看 | 又黄又爽又无遮挡免费的网站 | 亚洲第一av在线播放 | 国产精品永久久久久久久久久 | 精品亚洲一区二区三区 | av888av.com| 国产免费精彩视频 | 国内精品久久久久国产 | 国产日韩精品一区二区三区在线 | 狠狠干夜夜操天天爽 | 超碰在线个人 | 国内精品一区二区 | 久草久热 | 国产区精品在线 | 激情在线网 | 人人澡超碰碰97碰碰碰软件 | 日免费视频| 久99久久| 中文字幕国产精品 | 久草手机视频 | 五月天天天操 | 中文字幕在线看视频国产 | 国产精品永久久久久久久久久 | 99精品免费网 | 免费在线观看成年人视频 | 一区二三国产 | 日韩在线电影观看 | 国产一级二级视频 | 看黄色91| 人人澡人人舔 | 国产高清视频免费最新在线 | 99免费视频 | 亚洲免费a | 色资源网在线观看 | 国产精品久久一区二区三区不卡 | 精品欧美在线视频 | 天天插天天操天天干 | 欧美黑人巨大xxxxx | 91精品影视 | av一区在线 | 免费国产黄线在线观看视频 | 久久精品系列 | 色av婷婷 | 国产美女免费 | 韩国在线视频一区 | 日韩av不卡在线播放 | 国产精品久久久久影院日本 | 精品国产观看 | 日日干天天 | 国产精品videossex国产高清 | 日韩精品专区在线影院重磅 |