要不要也来分享分享一下啊

关于es中的索引是否需要的问题要请教

Elasticsearch | 作者 caobo | 发布于2020年04月10日 | 阅读数:2322

是这样的,我拿了es官方的jar,自己实现了es的部分方法,包括创建索引、删除索引等等,但是实际操作过程中,我感觉这个创建索引的,好像压根就没有用
BulkResponse bulkResponse = null;
BulkRequest request = new BulkRequest();
String id = UUID.randomUUID().toString().replaceAll("-","");
request.add(new IndexRequest("matchingnumberfnewdatasecond", ES_TYPE, id).source(map, XContentType.JSON));
bulkResponse = restHighLevelClient.bulk(request, RequestOptions.DEFAULT);
 
我的查询结果插入到es库基本上都是这么操作的。感觉跟我创建索引没有任何关系啊,那我创建索引的那部分代码是否可以去掉呢?
es查询2.png
已邀请:

noAfraidStart - no afraid of start

赞同来自:

你这段代码是通过bulk写入数据,并不是创建索引的代码呀。
在ES中,数据写入时,会判断你传入的索引是否存在,如果不存在,那ES会自动创建这个索引,然后再继续写入(当然这个auto create index是可以关闭的),如果关闭了自动创建索引,这时,你再这样写入,就会报错了,说索引不存在。
那既然ES写入时,对不存在的索引会自动创建,那是不是就不需要自己创建索引了呢?
肯定不是这样的,因为如果你什么也没指定,那ES创建出来的索引,settings和mappings不一定是你期望的。如果你创建过索引模板,那ES会根据你配的索引模板确定settings和mappings,但是有些时候,模板定义也不能解决实际的需求。再加上如果数据写入本身压力就比较大了,如果一次写入还伴随着很多不存在的索引,这个时候也会影响写入性能。
所以正式使用时,一般会关闭自动创建索引,需要的索引会提前创建好,什么时候创建索引,具体到每个索引的配置信息,都需要在程序中设计好

要回复问题请先登录注册