# Profiling Queries
注意
Profile API 提供的詳細信息直接暴露了Lucene的類名和概念,這意味著對結果的完整解釋需要Lucene相當高級的知識。本頁試圖對Lucene如何執行查詢提供速成教程,以便您可以成功地使用Profile API診斷和調試查詢,但它只是一個概述。如需完整的理解,請參考Lucene對應位置的文檔和代碼。
也就是說,處理一個緩慢的查詢往往不需要完整理解Lucene。例如,我們普遍知道某個特定的查詢組件很緩慢,但不一定理解為什么該查詢的advance前階段是誘因。
原文鏈接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.4/_profiling_queries.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/_profiling_queries.html)
譯文鏈接 : [http://www.apache.wiki/display/Elasticsearch/Profiling+Queries](http://www.apache.wiki/display/Elasticsearch/Profiling+Queries)
貢獻者 : [王晗](/display/~wanghan),[岑曉燕](/display/~cenxiaoyan)
## 查詢部分/query Section
查詢部分(query)包含由Lucene在一個特定的分塊執行生成的查詢樹的詳細時序。這個查詢樹的整體結構類似于原來的Elasticsearch查詢,但可能會略有不同(偶爾會差異很大)。它也將使用類似但不總是相同的命名。使用我們以前的匹配查詢(match)示例,讓我們分析查詢部分(query):
```
"query": [
{
"type": "BooleanQuery",
"description": "message:message message:number",
"time": "1.873811000ms",
"time_in_nanos": "1873811",
"breakdown": {...}, (1)
"children": [
{
"type": "TermQuery",
"description": "message:message",
"time": "0.3919430000ms",
"time_in_nanos": "391943",
"breakdown": {...}
},
{
"type": "TermQuery",
"description": "message:number",
"time": "0.2106820000ms",
"time_in_nanos": "210682",
"breakdown": {...}
}
]
}
]
```
(1)為簡單起見,這里省略故障時間。
基于探查(profile)的結構,我們可以看到,我們的匹配查詢(match)被Lucene重寫為包含兩個條款(均有術語查詢(TermQuery))的布爾查詢(BooleanQuery)。類型字段(type)顯示Lucene類的名稱,并經常與Elasticsearch中對應的名字相同。這個描述字段(description)顯示Lucene查詢的解析文本,并可用于幫助區分查詢的各個部分。(如:message:search?and?message:test?都是術語查詢(TermQuery),否則會出現相同的兩個。)
時間字段(time)表明該查詢了執行整個布爾查詢(BooleanQuery)花費1.8ms,此記錄時間包含了所有孩子節點。
time_in nanos字段顯示一個精確的、機器可讀格式的時間信息(以納秒為單位)。
崩潰字段(breakdown)給出時間如何花費的詳細數據,我們一眼可以看到它。最后,孩子(children)數組列出了所有可能出現的子查詢。因為我們搜索了兩個值(“search test”),布爾查詢(BooleanQuery)有兩個孩子術語查詢(TermQueries)。它們有相同的信息(類型、時間、故障等)。孩子(children)可以嵌套自己的孩子(children)。
注意
時間字段(time)僅用于人類消費。如果你需要精確的定時值請使用time_in nanos字段。目前,默認打印時間字段(time),但這將在下一個主要版本 (6.0.0)的發生變化,將默認打印time_in_nanos字段。
### **定時故障/Timing Breakdown**
崩潰組件(breakdown)列出底層Lucene執行的詳細時序統計:
```
"breakdown": {
"score": 51306,
"score_count": 4,
"build_scorer": 2935582,
"build_scorer_count": 1,
"match": 0,
"match_count": 0,
"create_weight": 919297,
"create_weight_count": 1,
"next_doc": 53876,
"next_doc_count": 5,
"advance": 0,
"advance_count": 0
}
```
時間信息用網絡掛鐘的納秒列出來,且不規范化。所有關于時間的警告均適用于這里。 Breakdown的意圖是讓你感覺到(A)Lucene的運轉實際上耗費時間的,(B)各部件耗費時間的差異是非常大的。像所有的時間一樣,breakdown包含所有孩子的時間。
統計數據的含義如下:
### 所有的參數:/All parameters:
| create_weight | Lucene的查詢必須能夠在復雜的IndexSearchers重用(它被看做是針對特定的Lucene索引執行搜索的引擎。)。這使得Lucene處于一個棘手的境地,因為許多查詢(Query)需要積累與它正在使用的索引相關聯的臨時的狀態/統計信息,但查詢(Query)合同授權要求它必須不可變的。為了解決這個問題,Lucene要求每個查詢生成一個權重對象(weight object)作為臨時的上下文對象為這個特定的元組(IndexSearcher,Query)保持狀態信息。weight的度量表明這個過程所需要的時間長短。 |
| build_scorer | 此參數顯示建立查詢的記分器(Scorer)需要多長的時間。記分器(Scorer)是一種遍歷所有匹配文檔為每個文檔生成得分的機制(例如,“foo”與文檔的匹配程度是怎樣的?)。注意,這記錄了生成記分器(Scorer)對象而不是對文檔進行評分所需的時間。不同查詢初始化記分器(Scorer)有快有慢,取決于優化、復雜性等。這也可能說明計時與緩存(caching)是否被啟用或緩存是否適用于查詢(query)相關。 |
| next_doc | Lucene的方法next_doc返回下一個匹配查詢的文檔ID。此統計數據顯示確定哪個文檔是下一個匹配需要的時間,這是根據查詢的性質而變化很大的過程。next_doc是一種特殊形式的advance(),它使得Lucene的許多查詢更便捷。這相當于函數advance(docId() + 1)。 |
| advance | advance是next_doc的低版本:它的目的是找到下一個匹配的DOC,但需要調用查詢執行額外任務,如識別和移動過去的跳躍。然而,不是所有的查詢都可以使用next_doc,所以advance的目的是服務于那些查詢。聯合查詢(Conjunctions)(如,布爾查詢中有must)是advance的典型消費者。 |
| matches | 一些查詢,如短語查詢,使用“兩階段”過程匹配文檔。首先,“近似”匹配文檔,如果文檔大約匹配,它將用更嚴格的(和昂貴的)的方法進行第二次檢查。第二階段驗證是匹配的統計測量。例如,短語查詢首先通過確保所有術語都存在于文檔中來大約檢查文檔。如果所有的術語都存在,那么它執行第二階段驗證,以確保條款按次序形成短語,相比檢查條款是否存在這是更昂貴的。
由于這兩過程僅被少數查詢使用,統計度量結果往往是零。 |
| score | 這記錄了一個特定的文件通過評分器(Scorer)評分所需的時間。 |
| *_count | 紀錄調用特定方法的數量。例如, ”next_doc_count”:2,意味著nextDoc()在兩個不同的文檔中被調用。這可以通過比較不同查詢組件之間的計數來幫助判斷如何選擇查詢。 |
## 收集部分/collectors Section
響應的收集器(Collectors)部分顯示高級執行細節。Lucene通過定義一個“收集器(Collector)”來工作,它負責協調匹配文檔的遍歷、得分和集合。收集器(Collectors)也有單個查詢如何記錄聚合結果、執行無作用域的“global”查詢、執行post-query過濾,等功能。
看前面的例子:
```
"collector": [
{
"name": "CancellableCollector",
"reason": "search_cancelled",
"time": "0.3043110000ms",
"time_in_nanos": "304311",
"children": [
{
"name": "SimpleTopScoreDocCollector",
"reason": "search_top_hits",
"time": "0.03227300000ms",
"time_in_nanos": "32273"
}
]
}
]
```
我們看到一個收集器(Collector)由SimpleTopScoreDocCollector包裝成?CancellableCollector。SimpleTopScoreDocCollector是Elasticsearch使用的默認的“評分和排序”的收集器(Collector)。原因字段(reason)試圖對類名進行簡單的英文描述。時間字段(time)與查詢樹中的時間字段(time)相似:一個包括所有孩子節點的網絡掛鐘時間。同樣的是,孩子(children)列出所有子收集器(Collector)。包裝SimpleTopScoreDocCollector的CancellableCollector,被Elasticsearch用于檢測當前搜索是否被取消,一旦發生取消搜索的行為則停止收集文件。
應該指出的是,Collector times與Query times相互獨立。他們獨立計算、合并和規范化!由于Lucene的執行的性質,它不可能把收集器(Collectors)的時間“合并“”到查詢部分(Query),所以他們在不同的部分顯示出來。
作為參考,各種收集器Collectors的原因是:
| search_sorted | 整理和分類文件的收集器(collector)。這是最常見的收集器,會最簡單的搜索中出現。 |
| search_count | 一個僅計算查詢匹配的文檔數的收集器(collector),但不能獲取源代碼。只有當參數size被指定為0,這個收集器才會出現。 |
| search_terminate_after_count | 一個當N個匹配文檔被發現就終止搜索的收集器(collector)。只有當terminate_after_count query參數被指定,這個收集器才會出現。 |
| search_min_score | 一個只返回評分大于 N的匹配文檔的收集器(collector)。只有當頂層參數min_score被指定,這個收集器才會出現。 |
| search_multi | 包裹其他幾個收集器的收集器(collector)。只有當組合搜索(combinations of search),聚合(aggregations),全局聚合(global aggs)和post_filters結合在一個搜索里,這個收集器才會出現。 |
| search_timeout | 一個在特定時間中斷執行的收集器(collector)。只有當頂層參數timeout被指定,這個收集器才會出現。 |
| aggregation | 一個Elasticsearch在查詢范圍使用聚合的收集器(collector)。一個為所有聚合采集文件的聚合采集器,所以你會看到一個聚合名稱的列表。 |
| global_aggregation | 一個對全局查詢(global query scope)而不是指定查詢(specified query)執行聚合(aggregation)的收集器(Collector)。由于全局范圍(global query)不同于執行普通查詢(query),它必須執行它自己的match_all查詢(這會被添加到查詢部分(Query))來收集整個數據集。 |
## 重寫部分/rewrite Section
Lucene中的所有查詢都經過“重寫”過程。一個查詢(及其子查詢)可以重寫一次或多次,這過程繼續進行,直到查詢停止更改。這個過程讓Lucene進行優化,如去除多余的條款,一個更有效的執行路徑替換一個查詢。例如Boolean → Boolean → TermQuery 可以改寫為術語查詢(TermQuery),因為在這種情況下所有的布爾值都是多余的。重寫的過程是復雜的,難以顯示,因為查詢可以大幅改變。總改寫時間不顯示中間結果,只是顯示為一個值(以納秒為單位)。此值是累加的,包含所有被重寫查詢的總時間。
## 更復雜的例子/A more complex example
為了演示稍微復雜的查詢和相關的結果,我們可以探查(profile)以下查詢:
```
GET /test/_search
{
"profile": true,
"query": {
"term": {
"message": {
"value": "search"
}
}
},
"aggs": {
"non_global_term": {
"terms": {
"field": "agg"
},
"aggs": {
"second_term": {
"terms": {
"field": "sub_agg"
}
}
}
},
"another_agg": {
"cardinality": {
"field": "aggB"
}
},
"global_agg": {
"global": {},
"aggs": {
"my_agg2": {
"terms": {
"field": "globalAgg"
}
}
}
}
},
"post_filter": {
"term": {
"my_field": "foo"
}
}
}
```
這個例子有:
* 一個查詢(query)
* 一個局部聚合(scoped aggregation)
* 一個全局聚合(global aggregation)
* 一個后過濾(post_filter)
響應:
```
{
"profile": {
"shards": [
{
"id": "[P6-vulHtQRWuD4YnubWb7A][test][0]",
"searches": [
{
"query": [
{
"type": "TermQuery",
"description": "my_field:foo",
"time": "0.4094560000ms",
"time_in_nanos": "409456",
"breakdown": {
"score": 0,
"score_count": 1,
"next_doc": 0,
"next_doc_count": 2,
"match": 0,
"match_count": 0,
"create_weight": 31584,
"create_weight_count": 1,
"build_scorer": 377872,
"build_scorer_count": 1,
"advance": 0,
"advance_count": 0
}
},
{
"type": "TermQuery",
"description": "message:search",
"time": "0.3037020000ms",
"time_in_nanos": "303702",
"breakdown": {
"score": 0,
"score_count": 1,
"next_doc": 5936,
"next_doc_count": 2,
"match": 0,
"match_count": 0,
"create_weight": 185215,
"create_weight_count": 1,
"build_scorer": 112551,
"build_scorer_count": 1,
"advance": 0,
"advance_count": 0
}
}
],
"rewrite_time": 7208,
"collector": [
{
"name": "MultiCollector",
"reason": "search_multi",
"time": "1.378943000ms",
"time_in_nanos": "1378943",
"children": [
{
"name": "FilteredCollector",
"reason": "search_post_filter",
"time": "0.4036590000ms",
"time_in_nanos": "403659",
"children": [
{
"name": "SimpleTopScoreDocCollector",
"reason": "search_top_hits",
"time": "0.006391000000ms",
"time_in_nanos": "6391"
}
]
},
{
"name": "BucketCollector: [[non_global_term, another_agg]]",
"reason": "aggregation",
"time": "0.9546020000ms",
"time_in_nanos": "954602"
}
]
}
]
},
{
"query": [
{
"type": "MatchAllDocsQuery",
"description": "*:*",
"time": "0.04829300000ms",
"time_in_nanos": "48293",
"breakdown": {
"score": 0,
"score_count": 1,
"next_doc": 3672,
"next_doc_count": 2,
"match": 0,
"match_count": 0,
"create_weight": 6311,
"create_weight_count": 1,
"build_scorer": 38310,
"build_scorer_count": 1,
"advance": 0,
"advance_count": 0
}
}
],
"rewrite_time": 1067,
"collector": [
{
"name": "GlobalAggregator: [global_agg]",
"reason": "aggregation_global",
"time": "0.1226310000ms",
"time_in_nanos": "122631"
}
]
}
]
}
]
}
}
```
正如你所看到的,輸出明顯比前面冗長。查詢的所有主要部分都表示:
1. 第一個TermQuery?(message:search) 代表主術語查詢。
2. 第二個TermQuery?(my_field:foo) 代表后過濾(post_filter)查詢。
3. 有一個MatchAllDocsQuery (*:*)查詢,作為執行第二個不同的搜索。這不是由用戶指定的查詢的一部分,而是由全局聚合(global aggregation)為提供全局查詢范圍而自動生成的。
收集樹是相當簡單的,顯示了一個MultiCollector如何包裹FilteredCollector去執行post_filter(反過來,包裹正常的評分SimpleCollector),和bucketcollector運行所有作用域的聚合。 In the MatchAll search, there is a single GlobalAggregator to run the global aggregation.在MatchAll搜索中,有一個全局聚合器(GlobalAggregator)運行全局的聚合。
## 了解MultiTermQuery的輸出/Understanding MultiTermQuery output
這里需要對MultiTermQuery類查詢做一個特別注釋。這包括通配符(wildcards),正則表達式(regex)和模糊(fuzzy)查詢。這些查詢發出非常冗長的響應,并且不過度結構化。
從本質上講,這些查詢(query)在每一個段的基礎上改寫自己。如果你想象中的通配符查詢為"b*",在技術上它可以匹配任何以字母“b”開頭的標記。無法枚舉所有可能的組合,所以Lucene重寫查詢中被評估的段落。例如,某段中可能包含標記 [bar, baz],所以查詢query重寫到布爾查詢(BooleanQuery)中包含了"bar"和"baz"。另一段可能只有標記 [bakery],所以查詢query重寫成只包含"bakery"的術語查詢(TermQuery)。
由于這種每段重寫的動態,干凈的樹結構變得扭曲,并且不再有清晰的世系去顯示一個查詢如何被重寫rewriter成下一個。目前,我們所能做的就是道歉,如果它太混亂,建議您檢查該查詢的孩子節點的崩潰的細節。幸運的是,所有的時間統計都是正確的,只是不在響應(response)的物理布局中,因此只需分析頂層的MultiTermQuery,如果你發現的細節很難解釋請忽視的它的孩子節點。
希望在未來的迭代它會變成固定,但它是一個很難解決的、正在改善中的棘手問題 :)
- Getting Started(入門指南)
- Basic Concepts(基礎概念)
- Installation(安裝)
- Exploring Your Cluster(探索集群)
- Cluster Health(集群健康)
- List All Indices(列出所有索引)
- Create an Index(創建索引)
- Index and Query a Document(索引和查詢文檔)
- Delete an Index(刪除索引)
- Modifying Your Data(修改數據)
- Updating Documents(更新文檔)
- Deleting Documents(刪除文檔)
- Batch Processing(批處理)
- Exploring Your Data(探索數據)
- The Search API(搜索 API)
- Introducing the Query Language(介紹查詢語言)
- Executing Searches(執行查詢)
- Executing Filters(執行過濾)
- Executing Aggregations(執行聚合)
- Conclusion(總結)
- Setup Elasticsearch(設置)
- Installing Elasticsearch(安裝)
- zip 或 tar.gz 安裝
- Debian軟件包安裝Elasticsearch
- 用RPM安裝Elasticsearch
- Windows 環境下安裝ES
- Docker 方式安裝
- 配置Elasticsearch
- 重要Elasticsearch配置
- 安全配置
- 啟動前檢查
- 堆大小檢查
- 文件描述符檢查
- 內存鎖定檢查
- 最大線程數檢查
- 最大虛擬內存檢查
- 最大map數檢查
- JVM Client模式檢查
- 串行收集使用檢查
- 系統調用過濾檢查
- OnError與OnOutOfMemoryError檢查
- G1GC檢查
- 重要的系統配置
- 系統設置
- 在jvm.options中設置JVM堆大小
- 禁用swapping
- 文件描述符
- 虛擬內存
- 線程數
- 升級Elasticsearch
- Elasticsearch停機
- 重大改變
- 在5.3 重大改變
- 在5.2 重大改變
- Shadow Replicas已被棄用
- 在5.1 重大改變
- 在5.0 重大改變
- 搜索和查詢DSL改變
- 映射改變
- 過濾器改變
- Suggester變化
- 索引API改變
- 文檔API改變
- 設置的改變
- 分配改變
- HTTP改變
- REST API改變
- CAT API改變
- Java API改變
- Packaging
- Plugin改變
- 文件系統相關改變
- 磁盤上數據的路徑
- 聚合改變
- 腳本相關改變
- API 規范
- Multiple Indices(多個索引)
- Date math support in index names(索引名稱對 Date 和 Math 的支持)
- 常見選項
- URL-based access control(基于 URL 的訪問控制)
- Document APIS
- Index API
- Get API
- Update API
- 通過查詢 API 更新
- 多個 GET API
- Bulk API
- Reading and Writing documents(讀寫文檔)
- Delete API
- Delete By Query API
- Reindex API
- Term Vectors
- Multi termvectors API
- ?refresh
- Search APIs
- Search
- URI Search
- Request Body Search
- Query
- From / Size
- Sort
- Source filtering
- Fields
- Script Fields
- Doc value Fields
- Post filter
- Highlighting
- Rescoring
- Search Type
- Scroll
- Preference
- Explain
- Version
- Index Boost
- min_score
- Named Queries
- Inner hits
- Search After
- Field Collapsing 字段折疊
- Search 模板
- Multi Search 模板
- Search Shards API
- Suggesters
- Completion Suggester
- Context Suggester
- Phrase Suggester
- Term suggester
- Multi Search API
- Count API
- Validate API
- Explain API
- Profile API
- Profiling Queries
- Profiling Aggregations
- Profiling Considerations
- Aggregations
- Metric Aggregations
- 值計數聚合(Value Count Aggregation)
- 地理邊界聚合
- 地理重心聚合
- 基數聚合
- 平均值聚合
- 擴展統計聚合
- 最大值聚合
- 最小值聚合
- Bucket Aggregations
- Children Aggregation
- Date Histogram Aggregation
- Date Range Aggregation
- Diversified Sampler Aggregation
- Filter Aggregation(過濾器聚合)
- Filters Aggregation
- Geo Distance Aggregation(地理距離聚合)
- GeoHash grid Aggregation(GeoHash網格聚合)
- Global Aggregation(全局聚合)
- Histogram Aggregation
- IP Range Aggregation(IP范圍聚合)
- Missing Aggregation
- Nested Aggregation(嵌套聚合)
- Range Aggregation(范圍聚合)
- Reverse nested Aggregation
- Sampler Aggregation
- Significant Terms Aggregation
- 鄰接矩陣聚合
- Pipeline Aggregations
- Avg Bucket Aggregation
- Derivative Aggregation(導數聚合)
- Max Bucket Aggregation
- Min Bucket Aggregation
- Sum Bucket Aggregation
- Stats Bucket Aggregation
- Extended Stats Bucket Aggregation(擴展信息桶聚合)
- Percentiles Bucket Aggregation(百分數桶聚合)
- Cumulative Sum Aggregation(累積匯總聚合)
- Bucket Script Aggregation(桶腳本聚合)
- Bucket Selector Aggregation(桶選擇器聚合)
- Serial Differencing Aggregation(串行差異聚合)
- Matrix Aggregations
- Matrix Stats
- Matrix Stats(矩陣統計)
- Caching heavy aggregations(緩存頻繁聚合)
- Returning only aggregation results(僅返回需要聚合的結果)
- Aggregation Metadata(聚合元數據)
- Returning the type of the aggregation(返回聚合的類型)
- 索引 API
- Create Index /創建索引
- Delete Index /刪除索引
- Get Index /獲取索引
- Indices Exists /索引存在
- Open / Close Index API /啟動關閉索引
- Shrink Index /縮小索引
- Rollover Index/滾動索引
- Put Mapping /提交映射
- Get Mapping /獲取映射
- Get Field Mapping /獲取字段映射
- 卷影副本索引
- 依賴卷影副本的節點級設置
- 索引統計信息
- 索引段
- 索引恢復
- 索引分片存儲
- 清理緩存
- 刷新
- 同步刷新
- 重新加載
- 強制合并
- cat APIs
- cat aliases
- cat allocation
- cat count
- cat fielddata
- cat health
- cat indices
- cat master
- cat nodeattrs
- cat nodes
- cat pending tasks
- cat plugins
- cat recovery
- cat repositories
- cat thread pool
- cat shards
- cat segments
- cat snapshots
- 集群 API
- Cluster Allocation Explain API
- Cluster Health
- Cluster Reroute
- Cluster State
- Cluster Stats
- Cluster Update Settings
- Nodes hot_threads
- Nodes Info
- Nodes Stats
- Pending cluster tasks
- Task Management API
- 查詢 DSL
- 查詢和過濾上下文
- Match ALL 查詢
- 全文搜索
- 匹配查詢
- 短語匹配查詢
- 短語前綴匹配查詢
- 多字段查詢
- 常用術語查詢
- 查詢語句查詢
- 簡單查詢語句
- 復合查詢家族
- Constant Score 查詢
- Bool 查詢
- Dis Max 查詢
- Function Score 查詢
- Boosting 查詢
- Indices 查詢
- Join 查詢
- Has Child Query
- Has Parent Query
- Nested Query(嵌套查詢)
- Parent Id Query
- 術語查詢
- Exists Query(非空值查詢)
- Fuzzy Query(模糊查詢)
- Ids Query(ID 查詢)
- Prefix Query(前綴查詢)
- Range Query(范圍查詢)
- Regexp Query(正則表達式查詢)
- Term Query(項查詢)
- Terms Query(多項查詢)
- Type Query(類型查詢)
- Wildcard Query(通配符查詢)
- 地理位置查詢
- GeoShape Query(地理形狀查詢)
- Geo Bounding Box Query(地理邊框查詢)
- Geo Distance Query(地理距離查詢)
- Geo Distance Range Query(地理距離范圍查詢)
- Geo Polygon Query(地理多邊形查詢)
- Span 查詢
- Span Term 查詢
- Span Multi Term 查詢
- Span First 查詢
- Span Near 查詢
- Span Or 查詢
- Span Not 查詢
- Span Containing 查詢
- Span Within 查詢
- Span Field Masking 查詢
- Specialized queries(專業查詢)
- Mapping(映射)
- 字段類型
- Array
- Binary
- Range
- Boolean
- Date
- Geo-point datatype
- String
- Text
- Token數
- 滲濾型
- KeyWord
- Nested
- Object
- Numeric
- Meta-Fields(元字段)
- _all field
- _field_names field
- _id field
- _index field
- _meta field
- _parent field
- _routing field
- _source field
- _type field
- _uid field
- Mapping parameters(映射參數)
- analyzer(分析器)
- normalizer(歸一化)
- boost(提升)
- Coerce(強制類型轉換)
- copy_to(合并參數)
- doc_values(文檔值)
- dynamic(動態設置)
- enabled(開啟字段)
- fielddata(字段數據)
- format (日期格式)
- ignore_above(忽略超越限制的字段)
- ignore_malformed(忽略格式不對的數據)
- include_in_all(_all 查詢包含字段)
- index_options(索引設置)
- index (索引)
- fields(字段)
- Norms (標準信息)
- null_value(空值)
- position_increment_gap(短語位置間隙)
- properties (屬性)
- search_analyzer (搜索分析器)
- similarity (匹配方法)
- store(存儲)
- Term_vectors(詞根信息)
- Dynamic Mapping(動態映射)
- default mapping(mapping中的_default_)
- Dynamic field mapping(動態字段映射)
- Dynamic templates(動態模板)
- Override default template(覆蓋默認模板)
- Mapping(映射)
- Analysis
- Tokenizers(分詞器)
- Standard Tokenizer(標準分詞器)
- Letter Tokenizer
- Lowercase Tokenizer (小寫分詞器)
- Whitespace Analyzer
- 停止分析器
- UAX URL Email Tokenizer
- Classic Tokenizer
- Thai Tokenizer(泰語分詞器)
- NGram Tokenizer
- Keyword Analyzer
- Path Hierarchy Tokenizer(路徑層次分詞器)
- Pattern Tokenizer
- Token Filters(詞元過濾器)
- Apostrophe Token Filter(撇號/單引號過濾器)
- ASCII Folding Token Filter(ASCII Folding 詞元過濾器)
- CJK Bigram Token Filter(CJK Bigram詞元過濾器)
- CJK Width Token Filter(CJK寬度過濾器)
- Classic Token Filter(經典過濾器)
- Common Grams Token Filter(近義詞詞元過濾器)
- Compound Word Token Filter(復合詞過濾器)
- Decimal Digit Token Filter(十進制數字過濾器)
- Delimited Payload Token Filter(Delimited Payload詞元分析器)
- Edge NGram Token Filter(Edge NGram 詞元過濾器)
- Elision Token Filter(Elision詞元過濾器)
- Fingerprint Token Filter(指紋過濾器)
- Flatten Graph Token Filter(Flatten Graph 詞元過濾器)
- Hunspell Token Filter(Hunspell 詞元過濾器)
- Keep Types Token Filter(保留指定類型過濾器)
- Keep Words Token Filter(保留字過濾器)
- Keyword Marker Token Filter(Keyword Marker 詞元過濾器)
- Keyword Repeat Token Filter(Keyword Repeat 詞元過濾器)
- KStem Token Filter(KStem 詞元過濾器)
- Length Token Filter(長度詞元過濾器)
- Limit Token Count Token Filter(限制詞元數量過濾器)
- Lowercase Token Filter(Lowercase 詞元過濾器)
- Minhash Token Filter(Minhash過濾器)
- NGram Token Filter(NGram詞元過濾器)
- Normalization Token Filter(標準化詞元過濾器)
- Pattern Capture Token Filter(模式匹配詞元過濾器)
- Pattern Replace Token Filter(模式替換詞元過濾器)
- Phonetic Token Filter(Phonetic 詞元過濾器)
- Porter Stem Token Filter(Porter Stem 詞元過濾器)
- Reverse Token Filteredit(反向詞元過濾器)
- Shingle Token Filter(Shingle 詞元過濾器)
- Snowball Token Filter(Snowball 詞元過濾器)
- Standard Token Filters(標準詞元過濾器)
- Stemmer Override Token Filter(Stemmer Override 詞元過濾器)
- Stemmer Token Filter(Stemmer 詞元過濾器)
- Stop Token Filter(Stop 詞元過濾器)
- Synonym Graph Token Filter(Synonym Graph 詞元過濾器)
- Synonym Token Filter(Synonym 詞元過濾器)
- Trim Token Filter(Trim詞元過濾器)
- Truncate Token Filter(截斷詞元過濾器)
- Unique Token Filter(唯一詞元過濾器)
- Uppercase Token Filter(Uppercase詞元過濾器)
- Word Delimiter Token Filter(Word Delimiter 詞元過濾器)
- Character Filters(字符過濾器)
- md Strip Character Filter
- Mapping Character Filter
- Pattern Replace Character Filter
- Anatomy of an analyzer(分析器的分析)
- Testing analyzers(測試分析器)
- Analyzers(分析器)
- Configuring built-in analyzers(配置內置分析器)
- Standard Analyzer(標準分析器)
- Simple Analyzer(簡單分析器)
- 空白分析器
- Stop Analyzer
- 指紋分析器
- 模式分析器
- 自定義分析器
- 語言分析器
- 模塊
- Indices(索引)
- Circuit breakers(熔斷器)
- Fielddata cache(列數據緩存)
- indexing buffer(索引寫入緩沖)
- indices Recovery(索引恢復)
- NetWork Setting(網絡配置)
- Node Query Cache(節點查詢緩存)
- Shard request cache(分片請求緩存)
- 腳本
- Groovy 腳本語言
- Painless 腳本語言
- Painless 語法
- Painless 調試
- Lucene表達式語言
- 原生(Java)腳本
- 高級文本評分腳本
- 快照和還原
- 線程池
- 傳輸
- HTTP
- Tribe Node (部落節點)
- 跨集群搜索
- Cluster(集群)
- Disk-based Shard Allocation ( 基于磁盤的分片分配 )
- Shard Allocation Awareness ( 分片分配意識 )
- 群集級別分片分配
- Node
- 插件
- Index Modules(索引模塊)
- Analysis(分析)
- 索引分片分配
- 分片分配過濾
- 節點丟失時的延遲分配
- 索引恢復的優先級
- 每個節點的總分片數
- Mapper(映射)
- Merge(合并)
- Similarity module(相似模塊)
- Slow log(慢日志)
- Store
- 預加載數據到文件系統緩存
- Translog(事務日志)
- Ingest Node(預處理節點)
- Pipeline Definition(管道定義)
- Ingest APIs
- Put Pipeline API
- Get Pipeline API
- Delete Pipeline API
- Simulate Pipeline API(模擬管道 API)
- Accessing Data in Pipelines(訪問管道中的數據)
- Handling Failures in Pipelines(處理管道中的故障)
- Processors(處理器)
- Append Processor(追加處理器)
- Convert Processor(轉換處理器)
- Date Processor(日期處理器)
- Date Index Name Processor(日期索引名稱處理器)
- Fail Processor(故障處理器)
- Foreach Processor(循環處理器)
- Grok Processor(Grok 處理器)
- Gsub Processor(Gsub 處理器)
- Join Processor(連接處理器)
- JSON Processor(JSON 處理器)
- KV Processor(KV 處理器)
- Lowercase Processor(小寫處理器)
- Remove Processor(刪除處理器)
- Rename Processor(重命名處理器)
- Script Processor(腳本處理器)
- Set Processor(設置處理器)
- Split Processor(拆分處理器)
- Sort Processor(排序處理器)
- Trim Processor(修剪處理器)
- Uppercase Processor(大寫處理器)
- Dot Expander Processor(點擴展器處理器)
- How to(操作方式)
- 一些建議
- Recipes(訣竅)
- 索引速率調優
- 查詢優化
- 磁盤使用調優
- Testing(測試)
- Java Testing Framework(測試框架)
- ( why randomized testing ) 為什么隨機測試?
- Using the elasticsearch test classes ( 使用 elasticsearch 測試類 )
- unit tests(單元測試)
- integreation test(集成測試)
- Randomized testing(隨機測試)
- Assertions()
- Glossary of terms (詞匯表)
- Release Notes(版本說明)
- 5.3.0 版本說明
- 5.2.2 Release Notes
- 5.2.1 Release Notes
- 5.2.0 Release Notes
- 5.1.2 Release Notes
- 5.1.1 Release Notes
- 5.1.0 Release Notes
- 5.0.1 Release Notes