搜索引擎簡介

搜索引擎簡介

graph TD A[搜索引擎] style A fill:#cc66ff A --> B[4階段] A --> C[爬蟲] A --> D[倒排索引<br/><b>單文</b>矩陣] C --> E[做弊:<br/>內容<br/>連接<br/>隱藏<br/>web2.0] B --> G[暗網 <br/> 兩大難點] D --> I[分詞<br/>NLP] D --> K[動態索引<br/>三模塊] K --> L[分佈式<br/>文檔&單詞] I --> M[短語查詢] A --> N[檢索<br/>壓縮] N --> O[布爾<br/>向量<br/>機率<br/>語言<br/>學習] A --> P[連接分析] P --> Q[PageRank <br/> OPIC<br/>HITS:<br/>Authority,<br/>Hub] I --> R[多字段索引] I --> T[意圖分析<br/>發展趨勢] B --> U[Lucene<br>Solr<br>ES<br/>IKA..]

[TOC]html

本文爲閱讀《這就是搜索引擎:核心技術詳解》的讀書筆記java

搜索引擎是互聯網重要的組成部分,搜索引擎技術也是當前解決信息過載問題主要的手段git

能夠按照使用的技術將搜索引擎的發展分爲四個階段:github

  1. 分類目錄,和 PC 機上的文件目錄相似,相同種類的網址由人工整理並匯聚在一塊兒
  2. 文本檢索,使用信息檢索模型匹配用戶的搜索和頁面,例如在全部文檔中搜索用戶輸入的單詞,返回含有搜索詞的文檔
  3. 連接分析,在文本檢索的基礎上同時考慮網頁之間的連接關係,使用網頁之間的關係衡量網頁的流行(重要)性。若是沒有做弊,那麼大部分網頁使用超鏈指向的頁面其重要性通常大於其餘頁面,向用戶展現時優先返回這類多入鏈的網頁
  4. 用戶中心,以用戶爲中心,理解並知足用戶的個性化需求,例如用戶搜索 蘋果,但其實其可能要搜索 iphone 11

搜索引擎的目標是:更全、更快、更準web

搜索引擎的技術架構

graph LR A((互聯網)) style A fill:#00ff00 A --> B(網絡爬蟲<br/>網頁去重) B --> D[倒排索引<br/><連接關係>] C[雲平臺] --> D E[反做弊] --> D style E fill:#cc66ff D --> F[內容類似性<br/>連接分析] F --> G((網頁排序)) H((用戶)) style H fill:#00ff00 H --> I[Cache] I --> G

相關概念

  • 種子 URL & 網絡爬蟲,啓動網絡爬蟲時須要提供初始 URL,這些 URL 就是種子 URL
  • 網頁分類 & 網絡爬蟲,已下載、已過時、待下載(已加入爬蟲 URL 隊列)、可知頁面、不可知頁面
  • 爬蟲分類,批量型(達到目標即中止)、增量型(不停的抓取)、垂直型(關注特定領域的爬蟲)
  • 爬蟲的友好性,履行爬蟲禁抓協議以保護網站的部分私密性;儘可能減小被抓網站的網絡負載
  • 爬蟲爬取策略,由於爬蟲資源有限而網頁資源接近無限,故不一樣類型網頁的抓取與更新其策略不一樣
    • 寬度優先遍歷
    • 非徹底 PageRank ,抓取部分頁面與 URL 後分析這些 URL,隨後只抓取比較重要的網頁。一個簡單的方法:將網頁看做是圖的節點,被連接指向次數越多的網頁其重要性通常也越大(咱不考慮做弊)。全網的 PageRank 幾乎不可能,因此只能部分處理
    • OPIC(online page importance computation),和非徹底 PageRank 思路一致。每一個新抓的頁面都會被賦予相同的 cash(現金),這些 cash 會均分給當前頁面中的 URL,系統中已有URL 按照 cash 大小進行排序。OCIP 相對於 PageRank 而言優點在於速度與實時性
    • 大站優先
  • 已爬網頁更新策略
    • 歷史參考,過去頻繁更新的網頁未來頻繁更新的機率比較大,泊松過程
    • 用戶體驗策略,影響大的頁面應儘早更新
    • 聚類抽樣策略,不一樣種類頁面更新頻率不一樣
  • 分佈式爬蟲
    • 主從式爬蟲
    • 對等式爬蟲

暗網

所謂的暗網指的是那些存儲在數據庫裏,不能經過超連接訪問的資源集合。簡單點說所謂的暗網就是不能或者很難被搜索引擎收錄的網絡資源。攜程的機票數據須要經過組合的方式才能查詢出來,對於網絡爬蟲而言這個過程難以實現自動化,普通的暴力抓取將對被抓網站帶來較大的壓力並且效率很是低下算法

暗網爬蟲的技術難點有兩個:數據庫

  • 組合太多(始發地、目的地、出行時間、班次等),如何精心挑選查詢組合?
  • 查詢大部分是文本框,爬蟲如何輸入合適的內容?

上面兩個技術難點有部分解決方案,能夠參考《這就是搜索引擎》的第 2.6 節windows

索引

索引是搜索引擎的核心技術之一,是搜索引擎快速查找的基礎服務器

一些概念

  • 文檔(Doc),以文本形式存在的對象,或者說能被分詞系統解析的獨立存儲單元,例如 PDF、Word、html、xml 等
  • 倒排索引(inverted index),倒排索引是下面單詞—文檔矩陣的一種存儲形式。經過倒排索引能夠根據單詞快速得到包含這個單詞的文檔列表。倒排索引經常使用的實現方法有哈希表和多叉樹
  • 單詞詞典,搜索引擎一般的索引單位是單詞,單詞詞典是文檔集合中出現過的全部單詞構成的字符串集合
  • 倒排列表,同一個單詞可能出如今了不一樣的文檔中,且在同一個文檔中也可能出現屢次,倒排列表用來保存單詞與文檔之間的關聯信息
  • 倒排文件,存儲全部單詞和其對應倒排列表的文件
  • 文檔頻率,代表某個單詞出如今了當前文檔集合中的多少個文檔中

單詞——文檔 矩陣

單詞文檔矩陣用來表示某一個文檔中是否存在某一個單詞,例如:restful

文檔 1 文檔 2 ... 文檔 n
詞彙 1 包含 不包含
... ... ... ... ...
詞彙 n 包含 ...

分詞系統

在英文的行文中,單詞之間是以空格做爲天然分界符的,而中文只有字、句和段能經過明顯的分界符來簡單劃界,而詞沒有一個形式上的分界符,分詞處理就是將連續的字序列按照必定的規範從新組合成詞序列的過程

單詞是搜索引擎的基本搜索元素,爲了建立單詞文檔矩陣,須要先使用分詞系統提取文檔中全部的單詞

文檔的分詞處理是天然語言處理(NLP)的核心工具之一,而 NLP 則是大數據時代極爲重要的工具。本文不對分詞算法作介紹,詳細信息能夠參考其餘文檔

倒排索引示例

示例文檔

文檔編號 文檔內容
1 谷歌地圖之父跳槽Facebook
2 谷歌地圖之父加盟Facebook
3 谷歌地圖創始人拉斯離開谷歌加盟Facebook
4 谷歌地圖之父跳槽Facebook與Wave項目取消有關
5 谷歌地圖之父拉斯加盟社交網站Facebook

倒排索引示例

單詞 ID 單詞 文檔頻率 倒排列表(文檔編號、詞頻、位置)
1 谷歌 5 (1;1;<1>),(2;1;<1>),(3;2;<1;6>),(4;1;<1>),(5;1;<1>)
2 創始人 1 (3;1;<3>)
... ... ... ...

單詞「谷歌」出如今了 5 個文檔中,而且在第三個文檔中出現了 2 次,分別在文檔第一個單詞處和第 6 個單詞處

索引的創建與更新

常見的索引創建方法有三種:兩遍文檔法、排序法和歸併法,比較經常使用的是歸併算法

在數據量大到不能使用內存存儲時只能使用外排算法:歸併

動態索引

搜索動態變化的文檔集合時須要建立動態索引,此時系統中有三個關鍵部分:倒排索引、臨時索引和已刪除文檔列表

變化的文檔會先創建臨時索引。文檔的更新按照刪除&從新添加進行處理,刪除的文檔須要在刪除文檔列表中進行維護,返回查詢結果時須要使用刪除文檔列表過濾查詢結果。

graph LR A((查詢)) style A fill:#00ff00 A --> C[臨時索引<br/><新增文檔>] A --> D[倒排索引] C --> E[已刪除文檔列表<過濾>] D --> E E --> F((查詢結果))

索引更新有多種策略:徹底重構、再合併、原地更新及混合策略,具體解釋參考原書 3.6 節。與爬蟲策略相似,不一樣屬性的單詞其索引更新策略也能夠不一樣

多字段索引

有些文檔有必定的結構,例如郵件有發件人、收件人、標題和正文等,有些搜索指明瞭搜索結構文檔中的某一部分,例如只在收件人列表中搜索。實現多字段索引須要使用必定途徑得到文檔的結構信息和單詞與文檔結構間的信息

多字段索引常見三種方法:

  • 多索引,即對結構化文檔的每個部分創建一個索引。對於郵件而言就是同時對標題、正文等不一樣部分創建獨立的索引
  • 倒排列表,只對文檔創建一個索引,不過在倒排列表中添加單詞所在結構的信息,後續使用這些信息過濾非指定位置的結果
  • 擴展列表方式,和上面第二種方式相似,不過位置信息並不是保存在倒排列表中。例如擴展列表詳細描述了某一篇文檔的結構:第 1 個單詞到第 21 個單詞是發件人信息,那麼若是查詢結果中的單詞不是位於1~21單詞,則能夠知道這個結果不位於發件人信息中。這種方式比第二種方式可擴展性更強

分佈式索引

對於搜索引擎而言創建分佈式索引的方案有兩種:按文檔劃分、按單詞劃分

按文檔劃分就是全部機器的功能都是相同的,不一樣機器對不一樣文檔創建索引,每次查詢的時候會發廣播給全部機器

按單詞劃分則不一樣機器對不一樣的單詞創建索引,一次查詢只會涉及到部分機器

經常使用的方法是按文檔進行索引,由於按單詞進行索引有如下缺點:

  • 可擴展性差,每增長一個文檔就會涉及到不少不一樣的機器,由於一個文檔中包含了大量單詞,這些單詞又被不一樣機器索引
  • 負載均衡能力差,有些單詞很常見,索引這類單詞的機器比其餘機器須要更多的資源
  • 容錯性差,任何一臺機器失效,某些單詞的檢索就會失敗,由於不一樣機器索引不一樣單詞
  • 查詢方式限制,按單詞劃分只能使用一次一單詞(下面介紹)的方式進行查詢,而有些搜索須要按一次一文檔的方式

查詢

索引創建以後就可使用索引來查詢了,使用索引進行查詢有兩大類方法:一次一文檔、一次一單詞

查詢的目的在於得到與查詢信息相關的文檔,若是查詢結果有多個,還需對結果文檔按照相關度進行排序。對文檔相關度的計算能夠從兩個角度進行,一種是計算完一個文檔後再計算另外一個文檔,另外一種是先計算每一個文檔關於某個單詞的相關度得分,最後把得分累加,即爲文檔的最終得分

  • 一次一文檔

    以倒排列表中包含的文檔爲單位,每次計算一個文檔和查詢字段的最終類似性,而後計算餘下文檔,最後對文檔得分進行排序

  • 一次一單詞

    以查詢單詞爲單位,每次查詢一個文檔關於一個單詞的得分,查詢完一個單詞所涉及的全部文檔後再查下一個單詞。累加全部單詞得分即爲文檔的最終得分

短語查詢

常見的短語查詢方法

  1. 位置信息索引方式很直觀,單詞在文檔中出現的順序和短信中的順序相同即認爲匹配,但當短信中包含的單詞比較多時效率不高

  2. 雙詞索引在常見的雙詞短信中的兩個單詞之間創建鏈接,能夠經過雙詞的首詞快速的找到下詞。雙詞索引會消耗大量的存儲空間,故通常只對常見短語使用這種方式

  3. 短語索引就是將短語看成單詞看待併爲其創建索引,短語索引通常須要結合數據挖掘來得到熱門短語

短語亦有屬性與類別,不一樣屬性的短信可使用不一樣的索引方式

索引壓縮(略)

檢索模型&搜索排序

檢索模型

布爾模型

布爾模型是檢索模型中最簡單的一種,其數學基礎是集合論。在布爾模型中,文檔與用戶查詢由其包含的單詞集合來表示,二者 的類似性則經過布爾代數運算來進行斷定,例如:Query = apple AND ( Jobs OR Ipad2 ),單詞文檔矩陣結果爲 true 時返回對應的文檔 ID

向量空間模型

常見的方式是以單詞做爲特徵,使用 t 維帶權重向量表示一個文檔。檢索時將用戶查詢信息也當作一個特殊的文檔亦轉化爲特徵向量,使用向量距離度量查詢與文檔的相關性

機率檢索模型

機率檢索模型是當前效果最好的模型之一,大部分商用搜索引擎都使用這種方式。BM25 是當前效果最好的機率搜索模型

看完貝葉斯以後再看一遍

語言模型方法

判斷由文檔生成用戶查詢的可能性有多大,而後按照這種生成機率由高到低排序,做爲搜索結果

機器學習排序

當排序因子比較多時使用機器學習方法較好

用戶點擊能夠看作是一種標籤,點擊率高說明當前頁面和查詢相關性高

連接分析

搜索引擎在檢索信息時經常使用的兩大特徵:

  1. 網頁和查詢的相關性

  2. 網頁的重要性

概念

入鏈、出鏈、錨文字

PageRank & HITS & SALSA

PageRank

PageRank 算法主要使用網頁的入鏈個數質量)做爲依據來給網頁打分,PageRank 算法與用戶查詢無關

其餘改進算法:

  • 主題敏感 PageRank

HITS

HITS 算法有兩個主要的概念: Hub 頁面和 Authority 頁面。Authority 頁面指與某個領域或者話題相關度高的網頁,例如與視頻相關度高的網頁有騰訊視頻、優酷視頻等;Hub 頁面指的是包含不少出鏈指向高質量 Authority 頁面的頁面。HITS 算法在海量網頁中找到與用戶查詢主題相關的高質量 Authority 頁面和 Hub 頁面並以此爲結果返回給用戶

HITS 算法與用戶查詢密切相關

SALSA & Hilltop

SALSA 和 Hilltop 算法是 PageRank 和 HITS 算法的結合與改進

網頁反做弊

常見做弊手段

內容做弊

關鍵詞重複、網頁標題做弊、網頁重要標籤做弊、內容農場

連接做弊

連接農場、google 轟炸(精心設計錨文字)、連接購買等

頁面隱藏做弊

用戶看見的內容和搜索引擎收錄的內容不一樣,例如 IP 地址做弊、頁面內容隱藏等

web 2.0 做弊手段

web 2.0 指的是一個利用 Web 平臺,由用戶主導而生成內容的互聯網產品模式,區別傳統(web 1.0)由網站僱員主導生成內容的互聯網模式

常見做弊手段有:博客做弊、點評做弊、微博做弊等

反做弊手段

信任傳播模型(信任知網,則檢索知網全部內容)、不信任傳播模型(剔除部分不可靠的網站)、異常發現模型、綜合模型等

用戶搜索意圖分析

分析用戶意圖以向用戶展現更準確的搜索內容

常見手段:

  1. 用戶搜索日誌挖掘
  2. 點擊圖分析,用戶優先點擊與本身搜索意圖相近的頁面
  3. 查詢圖,用戶會根據搜索引擎的返回修改檢索詞彙
  4. 相關搜索,返回相似內容
  5. 查詢糾錯等
  6. 等等

發展趨勢

  • 個性化搜索
  • 社會化搜索,社會化搜索的本質是信息過濾與推薦,社會化搜索經過社交關係選擇可信賴的用戶和答案
  • 實時搜索
  • 移動搜索
  • 地理位置感知搜索
  • 跨語言搜索,輸入中文,顯示英文相關結果
  • 多媒體搜索
  • 情景搜索

搜索引擎工具

graph TB A((Lucene)) A --> B[Solr] A --> C[ElasticSearch] A --> H[Java] B --> D[RESTful & Admin] B --> E[Core & Field] B --> F[IKAnalyzer] C --> F C --> G[Kibana]

Lucene

Lucene (['lu:si:n]) 是基於 java 的開源全文索引工具包

本文內容參考 how2j,感謝~

示例代碼

// 1. 準備中文分詞器
IKAnalyzer analyzer = new IKAnalyzer();

// 2. 使用測試數據建立索引
List<String> productNames = new ArrayList<>();
productNames.add("飛利浦led燈泡e27螺口暖白球泡燈家用照明超亮節能燈泡轉色溫燈泡");
productNames.add("飛利浦led燈泡e14螺口蠟燭燈泡3W尖泡拉尾節能燈泡暖黃光源Lamp");
productNames.add("雷士照明 LED燈泡 e27大螺口節能燈3W球泡燈 Lamp led節能燈泡");
productNames.add("飛利浦 led燈泡 e27螺口家用3w暖白球泡燈節能燈5W燈泡LED單燈7w");
productNames.add("飛利浦led小球泡e14螺口4.5w透明款led節能燈泡照明光源lamp單燈");
productNames.add("飛利浦蒲公英護眼檯燈工做學習閱讀節能燈具30508帶光源");
productNames.add("歐普照明led燈泡蠟燭節能燈泡e14螺口球泡燈超亮照明單燈光源");
productNames.add("歐普照明led燈泡節能燈泡超亮光源e14e27螺旋螺口小球泡暖黃家用");
productNames.add("聚歐普照明led燈泡節能燈泡e27螺口球泡家用led照明單燈超亮光源");		
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter writer = new IndexWriter(index, config);

for (String name : productNames) {
    Document doc = new Document();
    doc.add(new TextField("name", name, Field.Store.YES));
    writer.addDocument(doc);
}
writer.close();

// 3. 查詢器
String keyword = "護眼帶光源";
Query query = new QueryParser("name", analyzer).parse(keyword);

// 4. 搜索
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
int numberPerPage = 1000;
System.out.printf("當前一共有%d條數據%n",productNames.size());
System.out.printf("查詢關鍵字是:\"%s\"%n",keyword);
System.out.printf("查詢字符串分詞結果:\"%s\"%n",query);
ScoreDoc[] hits = searcher.search(query, numberPerPage).scoreDocs;

// 5. 顯示查詢結果 
for (int i = 0; i < hits.length; ++i) {
    ScoreDoc scoreDoc= hits[i];
    int docId = scoreDoc.doc;
    Document d = searcher.doc(docId);
    List<IndexableField> fields = d.getFields();
    System.out.print((i + 1));
    System.out.print("\t" + scoreDoc.score);
    for (IndexableField f : fields) {
        System.out.print("\t" + d.get(f.name()));
    }
    System.out.println();
}

// 6. 關閉查詢
reader.close();

執行結果 1:

查詢關鍵字是:"護眼帶光源"
查詢字符串分詞結果:"name:護眼 name:帶 name:光源"
1	5.159822	飛利浦蒲公英護眼檯燈工做學習閱讀節能燈具30508帶光源
2	0.43331528	歐普照明led燈泡蠟燭節能燈泡e14螺口球泡燈超亮照明單燈光源
3	0.425806	飛利浦led燈泡e14螺口蠟燭燈泡3W尖泡拉尾節能燈泡暖黃光源Lamp
4	0.425806	飛利浦led小球泡e14螺口4.5w透明款led節能燈泡照明光源lamp單燈
5	0.425806	歐普照明led燈泡節能燈泡超亮光源e14e27螺旋螺口小球泡暖黃家用
6	0.425806	聚歐普照明led燈泡節能燈泡e27螺口球泡家用led照明單燈超亮光源

執行結果 2:

查詢關鍵字是:"led 黃色"
查詢字符串分詞結果:"name:led name:黃色"
1	0.22168216	飛利浦led小球泡e14螺口4.5w透明款led節能燈泡照明光源lamp單燈
2	0.22168216	聚歐普照明led燈泡節能燈泡e27螺口球泡家用led照明單燈超亮光源
3	0.21906272	雷士照明 LED燈泡 e27大螺口節能燈3W球泡燈 Lamp led節能燈泡
4	0.20684227	飛利浦 led燈泡 e27螺口家用3w暖白球泡燈節能燈5W燈泡LED單燈7w
5	0.1634743	飛利浦led燈泡e27螺口暖白球泡燈家用照明超亮節能燈泡轉色溫燈泡
6	0.1634743	歐普照明led燈泡蠟燭節能燈泡e14螺口球泡燈超亮照明單燈光源
7	0.16064131	飛利浦led燈泡e14螺口蠟燭燈泡3W尖泡拉尾節能燈泡暖黃光源Lamp
8	0.16064131	歐普照明led燈泡節能燈泡超亮光源e14e27螺旋螺口小球泡暖黃家用

執行結果 3:

查詢關鍵字是:"led 黃"
查詢字符串分詞結果:"name:led name:黃"
1	2.0358434	歐普照明led燈泡節能燈泡超亮光源e14e27螺旋螺口小球泡暖黃家用
2	0.22168216	飛利浦led小球泡e14螺口4.5w透明款led節能燈泡照明光源lamp單燈
3	0.22168216	聚歐普照明led燈泡節能燈泡e27螺口球泡家用led照明單燈超亮光源
4	0.21906272	雷士照明 LED燈泡 e27大螺口節能燈3W球泡燈 Lamp led節能燈泡
5	0.20684227	飛利浦 led燈泡 e27螺口家用3w暖白球泡燈節能燈5W燈泡LED單燈7w
6	0.1634743	飛利浦led燈泡e27螺口暖白球泡燈家用照明超亮節能燈泡轉色溫燈泡
7	0.1634743	歐普照明led燈泡蠟燭節能燈泡e14螺口球泡燈超亮照明單燈光源
8	0.16064131	飛利浦led燈泡e14螺口蠟燭燈泡3W尖泡拉尾節能燈泡暖黃光源Lamp

仔細查看執行結果 2 和 3,這兩次搜索意圖其實很相近,但 Lucene 卻返回了徹底不一樣的結果。實際的搜索引擎會考慮用戶的搜索意圖,例如自動修改用戶查詢字符串以得到語義(意圖)類似的查詢字符串而後進行查詢,最後向用戶展現綜合後的查詢結果

IKAnalyzer

Lucene 和其餘基於 Lucene 的搜索工具默認不包含中文分詞其,默認環境下這些工具會將中文語句、段落或者文章分解爲一個個單字,沒法實現中文詞語檢索。IKAnalyzer 是一個三方中文分詞器

「研究生命科學」 爲例,使用默認的 Lucene 分詞器,分詞結果爲 6 個獨立的漢字:

研 | 究 | 生 | 命 | 科 | 學

使用 IKAnalyzer 做爲分詞器,分詞結果爲 5 個漢語單詞:

研究生 | 研究 | 生命科學 | 生命 | 科學

Solr

Solr (['səulə])是一個開源搜索平臺,用於構建搜索應用程序。它創建在 Lucene 之上

Solr 提供了相似 RESTful-API 的方式以便於其餘系統與 Solr 進行通訊,同時 Solr 提供了 web Admin 界面,便於用戶操做與管理

概念

  • Core

    若是說 Solr 至關於一個數據庫的話,那麼 Core 就至關於一張表

  • Field,查詢時須要指定字段名

    Core 至關於表,接下來就要爲這個表設置字段,用於存放數據。使用 Solr 進行查詢時須要指明查找的字段與查詢的詞,例如:SolrUtil.query("name:小米 電視 平板",0,10)SolrUtil.query("category:家電",0,10)

經常使用命令(windows)

  • solr.cmd start
  • solr.cmd stop -all
  • solr.cmd create -c how2java -p 8983,建立 core
  • solr.cmd delete -c core1

ElasticSearch

和 Solr 同樣, ElasticSearch 基於 Lucene,提供了更爲便利的訪問和調用

ES 和 Solr 同樣沒有默認的中文分詞器,須要三方工具,安裝命令:

elasticsearch-plugin.bat install file:.\elasticsearch-analysis-ik-6.2.2.zip

Kibana

Kibana 是一個開源的分析和可視化平臺,設計用於和 Elasticsearch 一塊兒工做。Kibana 是分析 ES 中數據的工具,Kibana 提供了 Dev tools 工具,便於用戶使用 RESTful 風格方式向 ES 服務發送請求

默認訪問端口:127.0.0.1:5601

索引

索引至關於就是一個數據庫服務器上的某個數據庫,因此索引也能夠當作是 Elastic Search 裏的某個數據庫

使用 RESTful 風格操控 ES
PUT /how2java?pretty  
GET /_cat/indices?v   
DELETE /how2java?pretty

PUT /how2java/product/1?pretty
{
  "name": "蠟燭"
}
相關文章
相關標籤/搜索