添加默认字段 API编辑

[预览] 此功能处于技术预览阶段,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 在 Elasticsearch 7.0 及更高版本中,某些查询类型(例如简单查询字符串)对其可以查询的字段数量有限制。要在 Elasticsearch 中配置上限,请设置 indices.query.bool.max_clause_count 集群设置,默认值为 1024。

对于字段数量超过上限的索引,请添加 index.query.default_field 索引设置,以便在未为查询指定字段时通知 Elasticsearch 默认使用哪些字段。使用添加默认字段 API 将 index.query.default_field 设置添加到 Elasticsearch 索引。

请求编辑

要将 index.query.default_field 设置添加到 Elasticsearch 索引,请向 /api/upgrade_assistant/add_query_default_field/<index> 提交 POST 请求

GET /api/upgrade_assistant/add_query_default_field/myIndex
{
  "fieldTypes": ["text", "keyword"], 
  "otherFields": ["myField.*"] 
}

生成字段列表所需的 Elasticsearch 字段类型数组。

可选的附加字段名称数组,以点分隔。

为了将 index.query.default_field 索引设置添加到指定的索引,Kibana 会从索引映射生成所有字段的数组。这些字段包含在 fieldTypes 中指定的类型。Kibana 会将 otherFields 中指定的任何其他字段追加到默认字段数组中。

响应代码编辑

200
表示调用成功。
400
表示索引已具有 index.query.default_field 设置。不会对索引进行任何更改。

响应正文编辑

响应正文包含一个 JSON 结构,类似于以下内容

{
  "acknowledged": true
}

示例编辑

您的索引包含以下映射

GET /myIndex/_mappings
{
  "myIndex": {
    "mappings": {
      "properties": {
        "field1": { "type": "text" },
        "field2": { "type": "float" },
        "nestedfield": {
          "properties": {
            "field3": { "type": "keyword" },
            "field4": { "type": "long" },
          }
        }
      }
    }
  }
}

向 Kibana 发出以下请求

GET /api/upgrade_assistant/add_query_default_field/myIndex
{
  "fieldTypes": ["text", "long"],
  "otherFields": ["field2"]
}

API 返回以下内容

GET /myIndex/_settings?flat_settings=true
{
  "myIndex": {
    "settings": {
      "index.query.default_field": [
        "field1",
        "nestedfield.field4",
        "field2",
      ]
    }
  }
}

Kibana 根据指定的 fieldTypes 生成 field1nestedfield.field4 值,然后将 otherFields 追加到数组中。