<KeyValuePair>
bin/elasticsearch [-d] [-E <KeyValuePair>] [-p pidfile]
_cat/indices 集羣索引及其狀態java
_nodes/stats/process 查看節點運行狀態node
v vv vvv 詳細輸出
pretty 格式化輸出
refresh 將緩存內容更新到索引
filter_path 能夠過濾處指定信息linux
_source ["field1","field2"]返回文檔字段shell
orderexpress
$ES_HOME/plugins 插件目錄位置json
path:
data:
- path1
- path2
- path3
discover.zen.ping.unicast.hosts: - (host1/domian1)[:port] - (host2/domian2)[:port] (沒有指定端口時,將默認端口爲transport.profiles.default.port 返回到transport.tcp.port) (解析到多個ip地址的主機名稱會嘗試全部被解析的地址)
discovery.zen.minimum_master_nodes:(master_eligible_nodes / 2) + 1
index.unassigned.node_left.delayed_timeout 當一個節點關閉時,分配進程開始分配複製分片到集羣其餘節點的等待時間。bootstrap
removeapi
es.enforce.bootstrap.checks 強制啓動檢測數組
-E <name of logging hierarchy>=<level>
<name of logging hierarchy>: <level>
PUT /_cluster/settings {"transient":{"<name of logging hierarchy>": "<level>" }}
logger.<unique_identifier>.name = <name of logging hierarchy>
logger.<unique_identifier>.level = <level>
緩存
networkaddress.cache.ttl=<timeout>
到Java security policy中。啓動Java security manager時,當主機名稱解析失敗時,默認會緩存10秒,能夠經過添加networkaddress.cache.negative.ttl=<timeout>
到Java security policy中修改。<timeout>
爲0不緩存,爲-1永久緩存。這些配置不正確時(除了文件句柄配置),開發環境下會在日誌文件中輸出警告,而且仍然容許啓動,一旦修改瞭如network.host這樣的網絡配置,Elasticsearch就會判斷進入了生產環境,前面的警告會變爲異常,這些異常會阻止節點的啓動,這是保證你不會因爲一個配置不當的服務器丟失數據的重要安全措施。
index
參數,使用簡單的test1,test2,test3
標記(或者_all
表明所有索引)。也支持通配符,例如:test*
、*test
、te*t
或*test*
,而且能夠進行排除(-
),如:test*,-test3
。ignore_unavailable
控制當有任何指定的索引不可用(包括不存在的或關閉的索引)時,是否忽略。能夠指定爲true|false
allow_no_indices
控制一個索引通配表達式沒有實際的索引時,是否失敗。能夠指定爲true|false
。例如使用通配表達式foo而且沒有以foo開始的可用索引會根據這個設定決定請求是否爲fail。這個設定一樣適用於_all,或沒有指定索引。在一個別名指向一個關閉的索引時,這個設定一樣能夠應用到別名expand_wildcards
控制索引通配表達式拓展的具體類型。若是指定爲open
則通配表達式僅在打開的索引上拓展,若是指定爲closed
則通配表達式僅在關閉的索引上拓展,同時指定(open,closed
)指定拓展到所有索引。若是指定爲none
,關閉通配,若是指定爲all
通配表達式拓展到所有索引(與指定爲open,closed
相同)index
參數中支持時間序列。一個時間序列索引名經過如下形式得到<static_name{date_math_expr{date_format|time_zone}}>
static_name
爲名稱的靜態文本部分date_math_expr
爲動態計算時間的動態時間表達式date_format
爲日期計算應該使用的格式選項,默認爲YYYY.MM.dd
time_zone
時區選項,默認爲utc
# GET /<logstash-{now/d}>/_search GET /%3Clogstash-%7Bnow%2Fd%7D%3E/_search { "query" : { "match": { "test": "data" } } }
< | %3C |
> | %3E |
/ | %2F |
{ | %7B |
} | %7D |
+ | %2B |
: | %3A |
, | %2C |
<logstash-{now/d}>
|logstash-2024.03.22
|<logstash-{now/M}>
|logstash-2024.03.01
|<logstash-{now/M{YYYY.MM}}>
|logstash-2024.03
|<logstash-{now/M-1M{YYYY.MM}}>
|logstash-2024.02
|<logstash-{now/d{YYYY.MM.dd|+12:00}}>
|logstash-2024.03.23
|{
和}
,使用反斜槓\
來escape,如<elastic\\{ON\\}-{now/M}>
解析到 elastic{ON}-2024.03.01
logstash-YYYY.MM.dd
# GET /<logstash-{now/d-2d}>,<logstash-{now/d-1d}>,<logstash-{now/d}>/_search GET /%3Clogstash-%7Bnow%2Fd-2d%7D%3E%2C%3Clogstash-%7Bnow%2Fd-1d%7D%3E%2C%3Clogstash-%7Bnow%2Fd%7D%3E/_search { "query" : { "match": { "test": "data" } } }
Pretty Results
當進行任何請求時附加一個?pretty=true
,返回的JSON將會格式化梅花(只在調試時使用)。另外一個選項是設置?format=yaml
將會使返回值使用一個(有時)可讀性更好的yaml格式Human readable output
將返回更適合人類的統計值(如"exists_time": "1h"
或"size": "1kb"
)和社和計算機的(如"exists_time_in_millis": 3600000
或"size_in_bytes":1024
)。人類可讀的值能夠在query string中添加?human=false
來關閉。當統計結果被一個監控工具消費而不是被人類消費時,這是有意義的。默認的human
標記爲false
Date Math
多數參數接受一個格式化的時間值,例如在range queries
中的gt
和lt
,或daterange aggregations
中的from
和to
會理解日期計算。表達式以一個指定時間開始,包括now
或者一個以||
結尾的日期字符串。固定時間可使用如下一個或多個計算表達式:
+1h
- 加一小時-1d
- 減一天/d
- 取整到最近一天y
|年|M
|月|w
|周|d
|天|h
|時|H
|時|m
|分|s
|秒|now
爲2001-01-01 12:00:00
,一些例子爲:now+1h now in milliseconds plus one hour. Resolves to: 2001-01-01 13:00:00 now-1h now in milliseconds minus one hour. Resolves to: 2001-01-01 11:00:00 now-1h/d now in milliseconds minus one hour, rounded down to UTC 00:00. Resolves to: 2001-01-01 00:00:00 2001.02.01\|\|+1M/d 2001-02-01 in milliseconds plus one month. Resolves to: 2001-03-01 00:00:00
Response Filtering
全部REST APIs接受一個filter_path
參數用來減小Elasticsearch返回的響應。這個參數使用逗號分割使用.
標記的過濾表達式列表:GET /_search?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score
Responds: { "took" : 3, "hits" : { "hits" : [ { "_id" : "0", "_score" : 1.6375021 } ] } }
GET /_cluster/state?filter_path=metadata.indices.*.stat*
{ "metadata" : { "indices" : { "twitter": {"state": "open"} } } }
**
通配符用來包含不知道字段確切路徑時的字段名。例如,咱們可使用如下請求返回Lucene版本的每一個片斷:GET /_cluster/state?filter_path=routing_table.indices.**.state
Responds: { "routing_table": { "indices": { "twitter": { "shards": { "0": [{"state": "STARTED"}, {"state": "UNASSIGNED"}], "1": [{"state": "STARTED"}, {"state": "UNASSIGNED"}], "2": [{"state": "STARTED"}, {"state": "UNASSIGNED"}], "3": [{"state": "STARTED"}, {"state": "UNASSIGNED"}], "4": [{"state": "STARTED"}, {"state": "UNASSIGNED"}] } } } } }
-
排除一個或多個字段:GET /_count?filter_path=-_shards
Responds: { "count" : 5 }
GET /_cluster/state?filter_path=metadata.indices.*.state,-metadata.indices.logstash-*
Responds: { "metadata" : { "indices" : { "index-1" : {"state" : "open"}, "index-2" : {"state" : "open"}, "index-3" : {"state" : "open"} } } }
_source
字段。若是你想要過濾_source
字段,你應該考慮結合已經存在的_source
參數與filter_path
參數:POST /library/book?refresh {"title": "Book #1", "rating": 200.1} POST /library/book?refresh {"title": "Book #2", "rating": 1.7} POST /library/book?refresh {"title": "Book #3", "rating": 0.1} GET /_search?filter_path=hits.hits._source&_source=title&sort=rating:desc
{ "hits" : { "hits" : [ { "_source":{"title":"Book #1"} }, { "_source":{"title":"Book #2"} }, { "_source":{"title":"Book #3"} } ] } }
Flat Settings
flat_settings
標記影響設定列表的翻譯。當flat_settings
標記爲true
,設定會返回扁平化格式:GET twitter/_settings?flat_settings=true
Returns: { "twitter" : { "settings": { "index.number_of_replicas": "1", "index.number_of_shards": "1", "index.creation_date": "1474389951325", "index.uuid": "n6gzFZTgS664GUfx0Xrpjw", "index.version.created": ..., "index.provided_name" : "twitter" } } }
flat_settings
標記爲false
時,settings會返回更人類可讀的結構化格式:GET twitter/_settings?flat_settings=false
Returns: { "twitter" : { "settings" : { "index" : { "number_of_replicas": "1", "number_of_shards": "1", "creation_date": "1474389951325", "uuid": "n6gzFZTgS664GUfx0Xrpjw", "version": { "created": ... }, "provided_name" : "twitter" } } } }
flat_settings
默認設定爲false
Parameters
REST參數(當使用HTTP,map to HTTP URL parameters)聽從使用下劃線風格的約定Boolean Values
全部的REST APIs參數(包括請求參數和JSON body)支持使用"true"和"false"指定布爾值true|false
。全部其餘的值會引發一個錯誤。Number Values
全部的REST APIs支持數值參數爲字符串,支持JSON自然數值類型。Time units
在任何須要指定持續時間時,例如timeout
參數,持續時間必須指定單位,如2d
爲兩天,支持的單位以下:d
|天|h
|小時|m
|分|s
|秒|ms
|毫秒|micros
|微秒|nanos
|納秒|Byte size units
當須要指定數據字節大小時,如設定一個buffer size 參數時,必須指定值的單位,如10kb
。注意單位使用1024進位,支持的單位爲:b
|Bytes|kb
|Kilobytes|mb
|Megabytes|gb
|Gigabytes|tb
|Terabytes|pb
|Petabytes|Unit-less quantities
無數量單位意味着使用單位"bytes"或"Hertz"或"meter"或"long tonne",若是數量過大,ELasticsearch將會輸出像10m爲10,000,000或者7k爲7,000。這意味着當87時,仍會輸出87。這些是支持的乘數:k
|Kilo|m
|Mega|g
|Giga|t
|Tera|p
|Peta|Distance Units
但須要指定距離時(如Geo Distance Query
中的distance
參數)若是沒有指定時默認單位爲米。距離能夠指定爲其餘單位,如"1km"或"2mi"(2miles)。單位列表爲:mi|miles
|yd|yards
|ft|feet
|in|inch
|km|kilometers
|m|meters
|cm|centimeters
|mm|millimeters
|NM,nmi|natuicalmiles
|Fuzziness
一些queries和APIs支持運行模糊匹配的參數,使用fuzziness
參數,當querying text
或keyword
字段,fuzziness
會解釋爲Levenshtein Edit Distance
——使一個字符串與另外一個字符串相同須要改變的字符數。fuzziness
參數能夠像這樣指定:0
,1
,2
最大容許的修改數量,AUTO
局域term長度生成一個edit distance。能夠選擇AUTO:[low],[high]
指定low and high distance arguments,若是沒有指定,默認值爲3和6,即AUTO:3,6
,在如下長度將會:
0..2
必須徹底匹配3..5
容許單個edit>5
容許兩個editsAUTO
做爲fuzziness
的值Enabling stack trances
當請求返回一個錯誤時,Elasticsearch默認不會包含錯誤的stack trace,你能夠經過設置error_trace
url參數爲true
來開啓這個行爲。例如,當發送一個非法的size參數到_search API:POST /twitter/_search?size=surprise_me
響應會像這樣 { "error" : { "root_cause" : [ { "type" : "illegal_argument_exception", "reason" : "Failed to parse int parameter [size] with value [surprise_me]" } ], "type" : "illegal_argument_exception", "reason" : "Failed to parse int parameter [size] with value [surprise_me]", "caused_by" : { "type" : "number_format_exception", "reason" : "For input string: \"surprise_me\"" } }, "status" : 400 }
error_trace=true
時POST /twitter/_search?size=surprise_me&error_trace=true
響應爲 { "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "Failed to parse int parameter [size] with value [surprise_me]", "stack_trace": "Failed to parse int parameter [size] with value [surprise_me]]; nested: IllegalArgumentException..." } ], "type": "illegal_argument_exception", "reason": "Failed to parse int parameter [size] with value [surprise_me]", "stack_trace": "java.lang.IllegalArgumentException: Failed to parse int parameter [size] with value [surprise_me]\n at org.elasticsearch.rest.RestRequest.paramAsInt(RestRequest.java:175)...", "caused_by": { "type": "number_format_exception", "reason": "For input string: \"surprise_me\"", "stack_trace": "java.lang.NumberFormatException: For input string: \"surprise_me\"\n at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)..." } }, "status": 400 }
Request body in query string
對於不接受非POST請求的庫,能夠經過設置請求體爲source
query string 參數代替。當使用這種方式,source_content_type
參數也應該傳遞一個媒體類型的值,來制定source的格式,如application/jsonContent-Type Requirements
請求體發送的內容類型必須使用Content-Type
頭指定,請求頭的值必須映射到該API支持的一種格式。多數API支持JSON,YAML,CBOR和SMILE。bulk和multi-searchAPIs支持NDJSON(Newline delimited JSON),JSON和SMILE,而其餘類型將會致使錯誤響應。另外,當使用source
query string參數時內容類型必須使用source_content_type
query string參數指定。URL-based access conrtol
elasticsearch.yml
文件中添加設置rest.action.multi.allow_explicit_index: false
,默認值爲true
當指定爲false
時,Elasticsearch將拒絕在請求體中指定一個肯定索引的請求