ITPub博客

首页 > 数据库 > 数据库开发技术 > Elasticsearch 创建索引和索引模版

Elasticsearch 创建索引和索引模版

原创 数据库开发技术 作者:醉鱼Java 时间:2020-03-19 19:59:00 0 删除 编辑

elasticsearch 版本

elasticsearch 7.4.0

maven

        <dependency>            <groupId>org.elasticsearch.client</groupId>            <artifactId>elasticsearch-rest-high-level-client</artifactId>            <version>7.4.0</version>        </dependency>

直接上代码 讲解

创建索引

private void createIndex() throws IOException {
RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost("localhost", 9200, "http"))); CreateIndexRequest request = new CreateIndexRequest("tweets_1"); request.settings(Settings.builder() .put("index.number_of_shards", 1) .put("index.number_of_replicas", 0) );

        // 第一个字段message 类型text Map<String, Object> message = new HashMap<>(); message.put("type", "text"); // 第二个字段content,类型text Map<String, Object> content = new HashMap<>(); content.put("type", "text");        // 第三个字段title,类型keyword Map<String, Object> title = new HashMap<>(); title.put("type", "keyword"); Map<String, Object> properties = new HashMap<>(); properties.put("message", message); properties.put("content",content); properties.put("title",title); Map<String, Object> mapping = new HashMap<>(); mapping.put("properties", properties);        request.mapping(mapping);
// 索引别名 request.alias(new Alias("tweets_search").filter(QueryBuilders.termQuery("name", "tz"))); request.setTimeout(TimeValue.timeValueMinutes(2)); request.setMasterTimeout(TimeValue.timeValueMinutes(1)); // 同步执行        CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT); // 响应 boolean acknowledged = createIndexResponse.isAcknowledged(); log.info("创建索引响应1:[{}]",acknowledged); boolean shardsAcknowledged = createIndexResponse.isShardsAcknowledged();        log.info("创建索引响应2:[{}]",shardsAcknowledged); }

创建索引模版


public static final void createIndexTemp() throws IOException {RestHighLevelClient client = new RestHighLevelClient(                RestClient.builder(                        new HttpHost("localhost", 9200, "http")));            PutIndexTemplateRequest request = new PutIndexTemplateRequest("test_index_template");            List<String> indexPatterns = new ArrayList<String>();            indexPatterns.add("test*");            request.patterns(indexPatterns);
/** mapping */ XContentBuilder jsonBuilder = XContentFactory.jsonBuilder() .startObject() .startObject("_source") .field("enabled", false) .endObject()
.startObject("properties") .startObject("hostname") .field("type", "keyword") .endObject() .startObject("gmtCreate") .field("type", "date") .field("format", "yyyy-MM-dd HH:mm:ss") .endObject()
.endObject() .endObject();

request.mapping("_doc", jsonBuilder);
Map<String, Object> settings = new HashMap<>();
settings.put("number_of_shards", 1); settings.put("number_of_replicas",0); request.settings(settings); AcknowledgedResponse acknowledgedResponse = client.indices().putTemplate(request, RequestOptions.DEFAULT); log.info("创建索引模版返回:[{}]",acknowledgedResponse.isAcknowledged());
}

此处创建了一个索引模版,规则是索引名test*匹配,意思就是说创建的索引如果使用了模版,会创建我们模版中定义的字段,此处字段就是hostname,gmtCreate

好了代码在这了不懂就留言吧,源码在github

https://github.com/TianPuJun/springboot-demo/tree/master/springboot-elasticsearch7


原文作者:醉鱼Java;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-12-08

  • 博文量
    79
  • 访问量
    36660