首页 > 数据库 > 数据库开发技术 > Elasticsearch 创建索引和索引模版
elasticsearch 版本
elasticsearch 7.4.0maven
<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 类型textMap<String, Object> message = new HashMap<>();message.put("type", "text");// 第二个字段content,类型textMap<String, Object> content = new HashMap<>();content.put("type", "text");// 第三个字段title,类型keywordMap<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;如有侵权,请联系管理员删除。