当前位置: 首页 > 工具软件 > math-api > 使用案例 >

ES-API约定

江华容
2023-12-01

多索引

expand_wildcards

  设置是否扩展通配符到closed的index中,open表示只在匹配并为open的index中查询,closed表示在匹配的所有的index中查询, 默认为closed。

  值为open,close,none,all。

  • open:表示只支持open类型的索引
  • close:表示只支持关闭状态的索引
  • none:表示不可用
  • all:表示同时支持open和close索引

allow_no_indices

  当使用通配符查询时,当有索引不存在的时候是否返回查询失败。值为true和false,默认为true。

  allow_no_indices 跟 ignore_unavailable 都是用来防止没有索引的错误的,它们的区别是:

  • ignore_unavailable控制的是任何索引包括带通配符和不带通配符的
  • allow_no_indices 控制的是带通配符的索引

ignore_unavailable

  如果URL中一个或多个索引不存在的时候,是否忽略这些索引,值为true和false,默认为true。

索引名称对 Date 和 Math 的支持

  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}}>

  上述的说明 :

  • static_name:是索引名称的 static text( 静态文本)部分
  • date_math_expr:是动态计算日期的动态 date math 表达式
  • date_format:是计算日期应呈现的可选格式。默认是 YYYY.MM.dd
  • time_zone:是可选的时区。默认为 utc 。

  你必须将 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
  同样的数据:

  • 计算机格式:“exists_time_in_millis”: 3600000 or “size_in_bytes”: 1024
  • 人类可读懂格式;“exists_time”: “1h” or “size”: “1kb”

返回字段过滤

  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"}]
        }
      }
    }
  }
}

平面设置

  

flat_settings=true

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"
    }
  }
}

flat_settings=false (默认)

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"
      }
    }
  }
}

content-type

  • 大部分api:支持JSON, YAML, CBOR, and SMILE
  • bulk和multi-search API:支持NDJSON, JSON, and SMILE

基于 URL 的访问控制

  许多用户使用具有基于 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

 类似资料: