国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ElasticSearch01】ElasticSearch入門

這篇具有很好參考價值的文章主要介紹了【ElasticSearch01】ElasticSearch入門。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.數(shù)據(jù)類型

  • 結構化數(shù)據(jù)
    二維表等,保存到關系型數(shù)據(jù)庫中例如mysql
  • 非結構化數(shù)據(jù)
    圖像、視頻、工作日志等,保存到Nosql數(shù)據(jù)庫中,比如redis、mongodb中
  • 半結構化數(shù)據(jù)
    html、xml等保存到Nosql數(shù)據(jù)庫中,比如redis、mongodb中

2.Elasticsearch是什么

The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash(也稱為 ELK Stack)。能夠安全可靠地獲取任何來源、任何格式的數(shù)據(jù),然后實時地對數(shù)據(jù)進行搜索、分析和可視化。Elaticsearch,簡稱為 ES, ES 是一個開源的高擴展的分布式全文搜索引擎, 是整個 ElasticStack 技術棧的核心。它可以近乎實時的存儲、檢索數(shù)據(jù);本身擴展性很好,可以擴展到上百臺服務器,處理 PB 級別的數(shù)據(jù)。

3.全文搜索引擎

??Google,百度類的網(wǎng)站搜索,它們都是根據(jù)網(wǎng)頁中的關鍵字生成索引,我們在搜索的時候輸入關鍵字,它們會將該關鍵字即索引匹配到的所有網(wǎng)頁返回;還有常見的項目中應用日志的搜索等等。對于這些非結構化的數(shù)據(jù)文本,關系型數(shù)據(jù)庫搜索不是能很好的支持。

??一般傳統(tǒng)數(shù)據(jù)庫,全文檢索都實現(xiàn)的很雞肋,因為一般也沒人用數(shù)據(jù)庫存文本字段。進行全文檢索需要掃描整個表,如果數(shù)據(jù)量大的話即使對 SQL 的語法優(yōu)化,也收效甚微。建立了索引,但是維護起來也很麻煩,對于 insert 和 update 操作都會重新構建索引。

??基于以上原因可以分析得出,在一些生產(chǎn)環(huán)境中,使用常規(guī)的搜索方式,性能是非常差的:

  • 搜索的數(shù)據(jù)對象是大量的非結構化的文本數(shù)據(jù)。
  • 文件記錄量達到數(shù)十萬或數(shù)百萬個甚至更多。
  • 支持大量基于交互式文本的查詢。
  • 需求非常靈活的全文搜索查詢。
  • 對高度相關的搜索結果的有特殊需求,但是沒有可用的關系數(shù)據(jù)庫可以滿足。
  • 對不同記錄類型、非文本數(shù)據(jù)操作或安全事務處理的需求相對較少的情況。為了解決結構化數(shù)據(jù)搜索和非結構化數(shù)據(jù)搜索性能問題,我們就需要專業(yè),健壯,強大的全文搜索引擎 。

??這里說到的全文搜索引擎指的是目前廣泛應用的主流搜索引擎。它的工作原理是計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當用戶查詢時,檢索程序就根據(jù)事先建立的索引進行查找,并將查找的結果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。

4.Elasticsearch安裝

Elasticsearch官網(wǎng)
Elasticsearch官方文檔
Elasticsearch目錄結構

目錄 含義
bin 可執(zhí)行腳本目錄
config 配置目錄
jdk 內(nèi)置 JDK 目錄
lib 類庫
logs 日志目錄
modules 模塊目錄
plugins 插件目錄

進入bin文件點擊elasticsearch.bat啟動elasticsearch
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

注意: 9300 端口為 Elasticsearch 集群間組件的通信端口, 9200 端口為瀏覽器訪問的 http協(xié)議 RESTful 端口。

打開瀏覽器,輸入地址: http://localhost:9200,測試返回結果,返回結果如下:
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

5.Restful和JSON

??REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。 Web 應用程序最重要的 REST 原則是,客戶端和服務器之間的交互在請求之間是無狀態(tài)的。從客戶端到服務器的每個請求都必須包含理解請求所必需的信息。如果服務器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀態(tài)請求可以由任何可用服務器回答,這十分適合云計算之類的環(huán)境??蛻舳丝梢跃彺鏀?shù)據(jù)以改進性能。

??在服務器端,應用程序狀態(tài)和功能可以分為各種資源。資源是一個有趣的概念實體,它向客戶端公開。資源的例子有:應用程序對象、數(shù)據(jù)庫記錄、算法等等。每個資源都使用 URI(Universal Resource Identifier) 得到一個唯一的地址。所有資源都共享統(tǒng)一的接口,以便在客戶端和服務器之間傳輸狀態(tài)。使用的是標準的 HTTP 方法,比如 GET、 PUT、 POST 和DELETE。

??在 REST 樣式的 Web 服務中,每個資源都有一個地址。資源本身都是方法調(diào)用的目
標,方法列表對所有資源都是一樣的。這些方法都是標準方法,包括 HTTP GET、 POST、PUT、 DELETE,還可能包括 HEAD 和 OPTIONS。簡單的理解就是,如果想要訪問互聯(lián)網(wǎng)上的資源,就必須向資源所在的服務器發(fā)出請求,請求體中必須包含資源的網(wǎng)絡路徑, 以及對資源進行的操作(增刪改查)。

??REST 樣式的 Web 服務若有返回結果,大多數(shù)以JSON字符串形式返回。

JSON格式

var obj = {"name":"zhangsan","age":30,"info":{"email":"xxxxx"}}//對象
var objs=[obj,obj]//集合

JSON字符串:網(wǎng)絡中傳遞的字符串的格式符合JSON格式

6.Postman客戶端工具

Postman下載官網(wǎng)
??如果直接通過瀏覽器向 Elasticsearch 服務器發(fā)請求,那么需要在發(fā)送的請求中包含
HTTP 標準的方法,而 HTTP 的大部分特性且僅支持 GET 和 POST 方法。所以為了能方便地進行客戶端的訪問,可以使用 Postman 軟件。

??Postman 是一款強大的網(wǎng)頁調(diào)試工具,提供功能強大的 Web API 和 HTTP 請求調(diào)試。軟件功能強大,界面簡潔明晰、操作方便快捷,設計得很人性化。 Postman 中文版能夠發(fā)送任何類型的 HTTP 請求 (GET, HEAD, POST, PUT…),不僅能夠表單提交,且可以附帶任意類型請求體。

7.倒排索引

??Elasticsearch 是面向文檔型數(shù)據(jù)庫,一條數(shù)據(jù)在這里就是一個文檔。 為了方便大家理解,我們將 Elasticsearch 里存儲文檔數(shù)據(jù)和關系型數(shù)據(jù)庫 MySQL 存儲數(shù)據(jù)的概念進行一個類比
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
??ES 里的 Index 可以看做一個庫,而 Types 相當于表, Documents 則相當于表的行。這里 Types 的概念已經(jīng)被逐漸弱化, Elasticsearch 6.X 中,一個 index 下已經(jīng)只能包含一個type, Elasticsearch 7.X 中, Type 的概念已經(jīng)被刪除了。

正排(正向)索引

id content
1001 my name is zhangsan
1002 my name is lisi

如果想要查詢文章的內(nèi)容中包含哪些熱門詞匯,就會比較麻煩,需要使用模糊查詢,模糊查詢的效率會差很多,每條數(shù)據(jù)都要遍歷一下會導致性能差并且查詢內(nèi)容的大小寫、時態(tài)等等都會影響查詢的準確率。例如你查詢Zhang san那1001的內(nèi)容是匹配還是不匹配?

倒排索引

keyword id
name 1001,1002
zhang 1001

通過關鍵字來查詢主鍵id,然后再來關聯(lián)文章內(nèi)容,以前是通過主鍵id關聯(lián)文章內(nèi)容再去找關鍵字

8.Elasticsearch基本操作

8.1 索引操作

8.1.1 創(chuàng)建索引

對比關系型數(shù)據(jù)庫,創(chuàng)建索引就等同于創(chuàng)建數(shù)據(jù)庫。

在 Postman 中,向 ES 服務器發(fā)送PUT請求命令

PUT 請求命令:http://localhost:9200/shopping

PUT請求相當于創(chuàng)建的意思,這里表示創(chuàng)建一個shopping的索引

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

問題: 如果這個時候再去發(fā)送請求會怎么樣?
答案: PUT具有冪等性,只要發(fā)出了同樣的請求,結果是一樣的,意味著你再去發(fā)送一個請求就會有問題,因為此時已經(jīng)有了shopping這個索引,不需要再添加了。

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

8.1.2查詢索引

1.查詢指定索引

Get 請求命令:http://localhost:9200/shopping

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

2.查詢所有索引

GET請求命令:http://localhost:9200/_cat/indices?v

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

8.1.3刪除索引

DELTE請求命令:http://localhost:9200/shopping

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

8.2 文檔操作

8.2.1 創(chuàng)建文檔

假設索引已經(jīng)創(chuàng)建好了,接下來我們來創(chuàng)建文檔,并添加數(shù)據(jù)。這里的文檔可以類比為關系型數(shù)據(jù)庫中的表數(shù)據(jù),添加的數(shù)據(jù)格式為 JSON 格式

POST請求命令:http://localhost:9200/shopping/_doc

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
此時報錯,提示請求體是一定要有的,所以要在body中加入內(nèi)容

{
    "title":"小米手機",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":3999.00
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

??"_id": "G5SouIUB5Q51kdfNH1A6"為數(shù)據(jù)的唯一性標識類似于主鍵,由es軟件隨機生成的,同樣的請求返回的結果是不同的,所以POST不具有冪等性,但是PUT必須是冪等性的,所以用PUT請求會報錯。

8.2.2 創(chuàng)建文檔時自定義id

POST請求命令:http://localhost:9200/shopping/_doc/自己定義的id

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

此時指定了id那就說明這個操作是冪等性的,此時PUT也是可以的。

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

8.2.3 查詢文檔

1.主鍵查詢

Get 請求命令:http://localhost:9200/shopping/_doc/1001

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

2.查詢一個不存在的id

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

3.全查詢

Get 請求命令:http://localhost:9200/shopping/_search

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

8.2.4 修改文檔

1.全量修改

PUT 請求命令:http://localhost:9200/shopping/_doc/1001

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

2.局部修改

因為更新局部的數(shù)據(jù),說明每次更新的結果不會是相同的,那就不是冪等性的,所以不能采用PUT方式,只能采用POST方式

POST請求命令:http://localhost:9200/shopping/_update/1001

{
    "doc":{
        "title":"蘋果手機"
    }
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
查詢得到的結果

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

8.2.5 刪除文檔

DELETE請求命令:http://localhost:9200/shopping/_doc/1001

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

8.2.6 復雜查詢操作

1.條件查詢

Get 請求命令:http://localhost:9200/shopping/_search?q=category:小米

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
請求路徑中添加額外參數(shù)比較麻煩,而且中文容易出現(xiàn)亂碼,一般會將請求路徑調(diào)整為請求體傳遞參數(shù)

{
    "query":{
        "match":{
            "category":"小米"
        }
    }
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

2.全量查詢(請求體類型)

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

3.分頁查詢

from:表述當前頁數(shù)據(jù)查詢的起始位置,如果是第一條的話應該是0
起始位置的計算公式:(頁碼-1)*每頁數(shù)據(jù)條數(shù)
想查詢第二頁,頁碼就為2
size:表述每頁查詢的數(shù)據(jù)條數(shù)

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
想要的數(shù)據(jù)指定查詢
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
對結果排序
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

4.多條件查詢
{
    "query": {
    	//bool表示條件
        "bool": {
        	//"must"表示多個條件要同時成立
            "must":[
                {
                    "match":{
                    "category": "小米"
                    }
                },
                {
                    "match":{
                        "price": 3999.00
                    }
                    
                }
            ]
        }
    }
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

1.should是或的關系
{
    "query": {
        "bool": {
            "should":[
                {
                    "match":{
                        "category": "小米"
                    }
                    
                },
                {
                    "match":{
                        "category": "蘋果"
                    }
                    
                }
            ]
        }
    }
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

2.想要查詢價格大于3000的
{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "category": "小米"
                    }
                },
                {
                    "match": {
                        "category": "蘋果"
                    }
                }
            ],
            "filter": {
                "range": {
                    "price": {
                        "gt": 3000
                    }
                }
            }
        }
    }
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

3.全文檢索

為什么輸入一個小也能查詢到?
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

當保存文檔數(shù)據(jù)時候,es會將數(shù)據(jù)文字進行分詞拆解操作,并將拆解后的數(shù)據(jù)保存到倒排索引當中,這樣即使使用文字的一部分也能查詢到數(shù)據(jù)。
es會將查詢內(nèi)容也進行分詞操作,在倒排索引中進行匹配,例如拿小蘋查詢,蘋果和小米都會查詢到

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

4.完全匹配
{
    "query":{
        "match_phrase":{
            "title":"小蘋"
        }
    }
}

此時去查詢數(shù)據(jù)時完全匹配規(guī)則,數(shù)據(jù)會查不到因為沒有title叫小蘋
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

5.高亮查詢
{
    "query":{
        "match_phrase":{
            "category":"小米"
        }
    },
    "highlight":{
        "fields":{
            "category":{}
        }
    }
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

6.聚合查詢
{
    //聚合操作
    "aggs":{
        "price_group":{//名稱,隨意取
            "terms":{//分組操作
                "field":"price"//分組字段
            }
        }
    }
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
此時存在原始數(shù)據(jù)

加上"size":0,原始數(shù)據(jù)就沒有了,只有統(tǒng)計數(shù)據(jù)

{
    //聚合操作
    "aggs":{
        "price_group":{//名稱,隨意取
            "terms":{//分組操作
                "field":"price"//分組字段
            }
        }
    },
    "size":0
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
也可以求平均值
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

7.映射關系

有的查詢可以分詞查詢,有的查詢不可以分詞查詢,那怎么控制呢?

先創(chuàng)建一個user索引
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
創(chuàng)建結構信息

{
    "properties":{
        "name":{
            "type":"text",//text類型可以分詞
            "index":true//name字段可以被索引查詢
        },
        "sex":{
            "type":"keyword",//keyword不可以分詞
            "index":true//sex字段可以被索引查詢
        },
        "tel":{
            "type":"keyword",//keyword不可以分詞
            "index":false//tel字段可以被索引查詢
        }
    }
}

elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
增加數(shù)據(jù)
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索

查詢姓名
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
可以查到說明剛才查詢的name是具有分詞效果的

查詢性別
我這里只有一個男所以沒法演示,案例中性別是男的,查詢男,查不到所以說明keyword是沒法模糊匹配的

查詢電話
elasticsearch 完全匹配,elasticsearch,elasticsearch,全文檢索
說明電話是沒有被索引的所以不支持查詢文章來源地址http://www.zghlxwxcb.cn/news/detail-754991.html

到了這里,關于【ElasticSearch01】ElasticSearch入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ElasticSearch 實戰(zhàn):ElasticSearch文檔全文檢索

    Elasticsearch 實戰(zhàn):Elasticsearch 文檔全文檢索 全文檢索是 Elasticsearch 的核心功能之一,它允許用戶對文本內(nèi)容進行高效的模糊搜索、詞組匹配、同義詞處理、停用詞過濾等操作。以下是如何進行文檔全文檢索的詳細步驟: **1. **全文匹配查詢(Match Query) 最基礎的全文檢索查詢是

    2024年04月11日
    瀏覽(29)
  • 全文檢索-Elasticsearch-進階檢索

    全文檢索-Elasticsearch-進階檢索

    本文記錄谷粒商城高級篇的 Elasticsearch 進階檢索部分,續(xù)上之前記錄的 Elasticsearch入門篇。 ES 支持兩種基本方式檢索 : 一個是通過使用 REST request URI 發(fā)送搜索參數(shù)(uri + 檢索參數(shù)) 另一個是通過使用 REST request body 來發(fā)送它們(uri + 請求體) 請求體中寫查詢條件,語法: 示例

    2024年02月03日
    瀏覽(28)
  • ElasticSearch-全文檢索

    ElasticSearch-全文檢索

    https://www.elastic.co/cn/what-is/elasticsearch 全文搜索屬于最常見的需求,開源的Elasticsearch是目前全文搜索引擎的首選。 它可以快速地儲存、搜索和分析海量數(shù)據(jù)。 維基百科、StackOverflow、Github都采用它。 Elastic的底層是開源庫Lucene。但是,你沒法直接用Lucene,必須自己寫代碼去調(diào)用

    2024年04月17日
    瀏覽(26)
  • elasticsearch全文檢索

    傳送門 best_fields 傳送門 most_fields 當查詢多字段包含相同文本以不同方式分詞的時候此參數(shù)最有用, 傳送門 cross_fields phrase和phrase_prefix 傳送門 傳送門

    2024年02月07日
    瀏覽(33)
  • ElasticSearch+Neo4j+ElasticSearch Head實現(xiàn)全文檢索應用

    本文主要闡述利用ES、知識圖譜(Neo4j)實現(xiàn)全文檢索,并利用ElasticSearch Head開源項目進行全文檢索測試。實驗在圖譜的幫助下如何開展全文檢索功能,為后續(xù)的復雜查詢或語義檢索做準備。 一、運行環(huán)境 1.Linux 7.5 2.JDK 1.8.0_191 3.ElasticSearch 7.17.4,注意用ES自帶的jdk,因為這個版

    2024年02月09日
    瀏覽(16)
  • ES(Elasticsearch 全文檢索)

    ES(Elasticsearch 全文檢索)

    數(shù)據(jù)量大的時候 索引失效 =查詢性能低 功能比較弱 對文檔的內(nèi)容進行分詞,對詞條創(chuàng)建索引,記錄詞條所在的文檔信息根據(jù)詞條查詢到文檔的id 從而查到文檔 文檔:每一條數(shù)據(jù)就是一條文檔 詞條:文檔按照語義分成的詞語 正向索引 根據(jù)文檔的id創(chuàng)建索引 查詢詞條必須先找

    2024年02月05日
    瀏覽(52)
  • ElasticSearch全文檢索原理及過程

    ElasticSearch全文檢索原理及過程

    ????????ElasticSearch的搜索引擎中,每個 文檔都有一個對應的文檔 ID ,文檔內(nèi)容被表示為一系列的集合。例如文檔 1 經(jīng)過分詞,提取了 20 個, 每個都會記錄它在文檔中出現(xiàn)的次數(shù)和出現(xiàn)位置 。那么,倒排索引就是 到文檔 ? ID 的映射 ,每個關鍵

    2023年04月17日
    瀏覽(26)
  • 全文檢索-Elasticsearch-整合SpringBoot

    全文檢索-Elasticsearch-整合SpringBoot

    前面記錄了 Elasticsearch 全文檢索的入門篇和進階檢索。這次我們來講下 Spring Boot 中如何整合 ES,以及如何在 Spring Cloud 微服務項目中使用 ES 來實現(xiàn)全文檢索,來達到商品檢索的功能。 檢索服務單獨作為一個服務,就稱作 gulimall-search 模塊。 點擊 Next 勾選 Spring Web 依賴,點擊

    2024年02月08日
    瀏覽(18)
  • ElasticSearch:全文檢索及倒排索引原理

    ElasticSearch:全文檢索及倒排索引原理

    首先介紹一下結構化與非結構化數(shù)據(jù): 結構化數(shù)據(jù)將數(shù)據(jù)具有的特征事先以結構化的形式定義好,數(shù)據(jù)有固定的格式或有限的長度。典型的結構化數(shù)據(jù)就是傳統(tǒng)關系型數(shù)據(jù)庫的表結構,數(shù)據(jù)特征直接體現(xiàn)在表結構的字段上,所以根據(jù)某一特征做數(shù)據(jù)檢索很直接,速度也比較快

    2024年02月14日
    瀏覽(23)
  • 7-Elasticsearch組合查詢和全文檢索

    Elasticsearch組合查詢 組合查詢–布爾查詢 組合查詢中的常用的查詢方式:布爾查詢。 它將多個查詢條件組合在一起,并且將查詢的結果和結果的評分組合在一起。 布爾查詢是把多個子查詢組合成一個布爾表達式,所有子查詢之間邏輯關系是and,只有當一個文檔滿足布爾查詢

    2024年02月04日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包