<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将拒绝在请求体中指定一个肯定索引的请求