首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用Java API创建索引时使用模板

如何在使用Java API创建索引时使用模板
EN

Stack Overflow用户
提问于 2020-04-23 02:51:15
回答 1查看 73关注 0票数 0

我正在尝试创建一个索引,它将在每次重新创建时都具有一个公共结构。我已经在ES上创建了一个模板,并希望在通过Java程序创建和填充索引时使用它。从Java API创建索引时,如何使用索引模板。

索引模板

代码语言:javascript
复制
PUT _template/quick-search
{
  "index_patterns": ["quick-search*"],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_source": {
      "enabled": false
    },
    "properties": {

    "item" : {
        "type" : "long"
      },
      "description" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "id" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      }
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-24 08:12:32

由于您已经添加了一个索引模板,如果您现在尝试将文档保存在一个不存在的索引上,并且它的名称将与您在模板"index_patterns": ["quick-search*"]中提供的模式相匹配,则elasticsearch将根据模板自动创建映射,而不是基于您的输入创建映射。

此外,如果您尝试创建新索引并尝试设置映射(同样与模式匹配),则模板将充当默认模板。因此,对于新的索引,可以将item的类型设置为keyword。这将覆盖模板的默认long,但其他设置将从模板中获取,并且也将存在。

要测试,请转到kibana并设置模板

代码语言:javascript
复制
PUT _template/quick-search
{
  "index_patterns": [
    "quick-search*"
  ],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_source": {
      "enabled": false
    },
    "properties": {
      "item": {
        "type": "long"
      },
      "description": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  }
}

然后尝试创建新索引,但item需要是关键字

代码语言:javascript
复制
PUT quick-search-item-keyword
{
  "mappings": {
    "properties": {
      "item": {
        "type": "keyword",
        "index": true
      }
    }
  }
}

GET quick-search-item-keyword/_mapping

现在只需将文档保存在不存在的索引中

代码语言:javascript
复制
POST quick-search-test-id/_doc/
{
  "id": "test"
}

GET quick-search-test-id/_mapping

尝试将同一文档保存在不存在且与模板的索引模式不匹配的索引中

代码语言:javascript
复制
POST test/_doc/
{
  "id": "test"
}

GET test/_mapping

如果您使用java客户端,则没有什么不同。同样的道理也适用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61372865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档