设置是否扩展通配符到closed的index中,open表示只在匹配并为open的index中查询,closed表示在匹配的所有的index中查询, 默认为closed。
值为open,close,none,all。
当使用通配符查询时,当有索引不存在的时候是否返回查询失败。值为true和false,默认为true。
allow_no_indices 跟 ignore_unavailable 都是用来防止没有索引的错误的,它们的区别是:
如果URL中一个或多个索引不存在的时候,是否忽略这些索引,值为true和false,默认为true。
Date math 索引名称解析可以让您搜索一系列 time-series indices(时间序列索引),而不是搜索所有时间序列索引并过滤结果或维护 aliases(别名)。限制搜索的索引数量减少了集群上的集群上的负载,并提高了执行性能。例如,如果您在日常日志中 searching for errors(搜索错误 ),则可以使用 date math name 模板将搜索限制为过去两天。
几乎所有的具有索引参数的 API 都支持在 index parameter value(索引参数值)中包含 date math 。
date math 索引名称采用以下形式 :
<static_name{date_math_expr{date_format|time_zone}}>
上述的说明 :
你必须将 date math 索引名称表达式包含在尖括号中,并且所有的特殊字符都应进行 URI 编码。例如 :
# GET /<logstash-{now/d}>/_search
curl -XGET 'localhost:9200/%3Clogstash-%7Bnow%2Fd%7D%3E/_search?pretty' -H 'Content-Type: application/json' -d'
{
"query" : {
"match": {
"test": "data"
}
}
}
以下示例显示了不同形式的 date math index names(日期数学索引名称)和它们解析的 final index names(最终索引名称),它们给定的当前时间是 2024 年 3 月 22 日中午 utc。
表达式 | 解析结果 |
---|---|
<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 |
为了在索引名称模板的 static part(静态部分)中使用字符 { 和 } ,使用* * 对其进行转义,例如 :
<elastic\\{ON\\}-{now/M}> resolves to elastic{ON}-2024.03.01
下面的示例显示了一个搜索请求,搜索 LogStash 索引在过去的三天里,假设索引使用默认的 LogStash 索引名称格式, 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=true
返回JSON格式化的结果。
?human=true
打开人类可读懂配置,默认false
同样的数据:
filter_path
,指定返回的文档字段,多个字段通过英文逗号分隔
GET /_search?q=elasticsearch&filter_path=took,hits.hits._id,hits.hits._score
{
"took" : 3,
"hits" : {
"hits" : [
{
"_id" : "0",
"_score" : 1.6375021
}
]
}
}
支持 * 通配符
GET /_cluster/state?filter_path=metadata.indices.*.stat*
{
"metadata" : {
"indices" : {
"twitter": {"state": "open"}
}
}
}
支持 ** 多层级
GET /_cluster/state?filter_path=routing_table.indices.**.state
{
"routing_table": {
"indices": {
"twitter": {
"shards": {
"0": [{"state": "STARTED"}, {"state": "UNASSIGNED"}]
}
}
}
}
}
get movies/_settings?flat_settings=true
{
"movies" : {
"settings" : {
"index.creation_date" : "1647959071168",
"index.number_of_replicas" : "1",
"index.number_of_shards" : "1",
"index.provided_name" : "movies",
"index.uuid" : "9KChX8CsTYCaMG4RpSZTNg",
"index.version.created" : "7010199"
}
}
}
get movies/_settings?flat_settings=false
{
"movies" : {
"settings" : {
"index" : {
"creation_date" : "1647959071168",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "9KChX8CsTYCaMG4RpSZTNg",
"version" : {
"created" : "7010199"
},
"provided_name" : "movies"
}
}
}
}
许多用户使用具有基于 URL 的访问控制的代理来保护对 Elasticsearch 索引的访问。
要防止用户覆盖 URL 中指定的索引,请将此设置添加到 elasticsearch.yml 文件:
rest.action.multi.allow_explicit_index: false
默认值为 true,但当设置为 false 时,Elasticsearch 将拒绝在请求正文中指定了显式索引的请求。
参考:
https://doc.codingdict.com/elasticsearch/77/
https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#common-options