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

多索引expand_wildcards  设置是否扩展通配符到closed的index中,open表示只在匹配并为open的index中查询,closed表示在匹配的所有的index中查询, 默认为closed。  值为open,close,none,all。open:表示只支持open类型的索引close:表示只支持关闭状态的索引none:表示不可用all:表示同时支持open和close索引allow_no_indices  当使用通配符查询时,当有索引不存在的时候是否返回查询失败
在今天的这篇文章中,我们来主要介绍一下如何使用REST接口来对Elasticsearch进行操作。为了完成这项工作,我们必须完成如下的步骤: 安装 Elasticsearch。请参阅文章“如何在Linux,MacOS及Windows上进行安装Elasticsearch”。把Elasticsearch运行起来。 安装Kiban。请参阅文章“如何在Linux,MacOS及Windows上安装Ela................................................
 Elasticsearch 软件是由 Java 语言开发的,所以也可以通过 Java API 的方式对 Elasticsearch 服务进行访问。 一、项目依赖 <dependencies> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.8.0</ve
一、ES API常用规则 ES支持以Http协议的方式提供REST服务,以JSON格式发送请求返回响应。 ES提供了大量的不管的数据操作,运维管理API,大量的api 这海量的api有一些通用的功能特性。比如pretty格式化输出等等。 1.1 多索引参数 1. 支持多索引查询,就是同时可以查询多个索引中的数据,例如,参数test1,test2,test3,表示同时搜索tes...
ESAPI是一个免费、开源的Web应用程序安全控制组件,可以帮助编程人员开发低风险应用程序。    ESAPI是OWASP组织的一个开源项目,网址是: http://www.owasp.org/index.php/ESAPI    ESAPI很适合一个新的开发项目的安全组件,各版本的ESAPI包含如下基本设计: 具有一个安全接口集; 对每一种安全控制有一种参考实现;
Elasticsearch提供了一个REST API,通过HTTP通过JSON访问。 Elasticsearch使用以下约定 - API中的大多数操作(主要是搜索和其他操作)用于一个或多个索引。 这有助于用户通过只执行一次查询来搜索多个位置或所有可用数据。 许多不同的符号用于在多个索引中执行操作。 我们将在本节讨论其中的一些。 GET users,accounts/perso...
问题描述: 在使用ES的JavaRest API 的RestHighLevelClient,执行searchRequest操作时,出现部分请求参数不能识别的情况,如下: contains unrecognized parameters: [batched_reduce_size], [typed_keys]] ElasticsearchStatusException[Elasticsea
大多数引用index参数的API都支持跨多索引执行,使用简单的test1,test2,test3符号(或_all表示所有索引)。 它还支持通配符,例如:test*、*test、te*t、*test*,和“排除”的能力(-),例如:test*,-test3。 所有多索引API都支持以下url查询字符串参数: ignore_unava... API和英文文档地址  https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html https://www.el
elasticsearch-analysis-ik是一个Elasticsearch中文分词插件,可以帮助Elasticsearch更好地处理中文文本。以下是安装elasticsearch-analysis-ik-7.17的步骤: 1.从GitHub上下载对应版本的elasticsearch-analysis-ik插件,下载地址为:https://github.com/medcl/elasticsearch-analysis-ik/releases。 2.将下载的插件上传到Elasticsearch服务器的plugins目录中。 3.切换到Elasticsearch用户,并进入plugins目录中。 4.使用wget命令下载插件压缩包,例如:wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.3/elasticsearch-analysis-ik-7.17.3.zip。 5.使用unzip命令解压插件压缩包,例如:unzip -d elasticsearch-analysis-ik elasticsearch-analysis-ik-7.17.3.zip。 6.删除安装包,例如:rm -f elasticsearch-analysis-ik-7.17.3.zip。 以下是安装elasticsearch-analysis-ik-7.17的完整命令: ```shell # 切换到Elasticsearch用户 su es # 进入plugins目录 cd elasticsearch-7.17.3/plugins # 下载插件压缩包 wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.3/elasticsearch-analysis-ik-7.17.3.zip # 解压插件压缩包 unzip -d elasticsearch-analysis-ik elasticsearch-analysis-ik-7.17.3.zip # 删除安装包 rm -f elasticsearch-analysis-ik-7.17.3.zip