资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

esjava代码 java代码保存数据

es索引开启压缩参数

Elasticsearch 索引的配置项主要分为静态配置属性和动态配置属性,静态配置属性是索引创建后不能修改,而动态配置属性则可以随时修改。

成都创新互联专注于昆山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供昆山营销型网站建设,昆山网站制作、昆山网页设计、昆山网站官网定制、微信小程序开发服务,打造昆山网络公司原创品牌,更为您提供昆山网站排名全网营销落地服务。

索引设置

es 索引设置的 api 为 _settings,完整的示例如下:

PUT /my_index

{

"settings": {

"index": {

"number_of_shards": "1",

"number_of_replicas": "1",

"refresh_interval": "60s",

"analysis": {

JAVA代码ES设置setting

打开APP

weixin_39533307

关注

JAVA代码ES设置setting_Elasticsearch(es)索引设置(settings)参数详解 原创

2021-02-24 03:00:19

weixin_39533307

码龄5年

关注

Elasticsearch 索引的配置项主要分为静态配置属性和动态配置属性,静态配置属性是索引创建后不能修改,而动态配置属性则可以随时修改。

索引设置

es 索引设置的 api 为 _settings,完整的示例如下:

PUT /my_index

{

"settings": {

"index": {

"number_of_shards": "1",

"number_of_replicas": "1",

"refresh_interval": "60s",

"analysis": {

"filter": {

"tsconvert": {

"type": "stconvert",

"convert_type": "t2s",

"delimiter": ","

},

"synonym": {

"type": "synonym",

"synonyms_path": "analysis/synonyms.txt"

}

},

"analyzer": {

"ik_max_word_synonym": {

"filter": [

"synonym",

"tsconvert",

"standard",

"lowercase",

"stop"

],

"tokenizer": "ik_max_word"

},

"ik_smart_synonym": {

es 修改setting

打开APP

weixin_39533307

关注

JAVA代码ES设置setting_Elasticsearch(es)索引设置(settings)参数详解 原创

2021-02-24 03:00:19

weixin_39533307

码龄5年

关注

Elasticsearch 索引的配置项主要分为静态配置属性和动态配置属性,静态配置属性是索引创建后不能修改,而动态配置属性则可以随时修改。

索引设置

es 索引设置的 api 为 _settings,完整的示例如下:

PUT /my_index

{

"settings": {

"index": {

"number_of_shards": "1",

"number_of_replicas": "1",

"refresh_interval": "60s",

"analysis": {

"filter": {

"tsconvert": {

"type": "stconvert",

"convert_type": "t2s",

"delimiter": ","

},

"synonym": {

"type": "synonym",

"synonyms_path": "analysis/synonyms.txt"

}

},

"analyzer": {

"ik_max_word_synonym": {

"filter": [

"synonym",

"tsconvert",

"standard",

"lowercase",

"stop"

],

"tokenizer": "ik_max_word"

},

"ik_smart_synonym": {

"filter": [

"synonym",

"standard",

"lowercase",

"stop"

],

"tokenizer": "ik_smart"

}

},

"mapping": {

"coerce": "false",

"ignore_malformed": "false"

},

"indexing": {

"slowlog": {

"threshold": {

"index": {

"warn": "2s",

"info": "1s"

固定属性

index.creation_date:顾名思义索引的创建时间戳。

index.uuid:索引的 uuid 信息。

index.version.created:索引的版本号。

索引静态配置

index.number_of_shards:索引的主分片数,默认值是 5。这个配置在索引创建后不能修改;在 es 层面,可以通过 es.index.max_number_of_shards 属性设置索引最大的分片数,默认为 1024。

index.codec:数据存储的压缩算法,默认值为 LZ4,可选择值还有 best_compression,它比 LZ4 可以获得更好的压缩比(即占据较小的磁盘空间,但存储性能比 LZ4 低)。

index.routing_partition_size:路由分区数,如果设置了该参数,其路由算法为:( hash(_routing) + hash(_id) % index.routing_parttion_size ) % number_of_shards。如果该值不设置,则路由算法为 hash(_routing) % number_of_shardings,_routing 默认值为 _id。静态配置里,有重要的部分是配置分析器(config analyzers)。

index.analysis:分析器最外层的配置项,内部主要分为 char_filter、tokenizer、filter 和analyzer。

char_filter:定义新的字符过滤器件。

tokenizer:定义新的分词器。

filter:定义新的 token filter,如同义词 filter。

analyzer:配置新的分析器,一般是char_filter、tokenizer 和一些 token filter 的组合。

索引动态配置

index.number_of_replicas:索引主分片的副本数,默认值是 1,该值必须大于等于 0,这个配置可以随时修改。

index.refresh_interval:执行新索引数据的刷新操作频率,该操作使对索引的最新更改对搜索可见,默认为 1s。也可以设置为 -1 以禁用刷新。更详细信息参考 Elasticsearch 动态修改 refresh_interval 刷新间隔设置。

Java代码查询es 的索引是yellow的状态,怎么可以查询不报错?

建议提前检查,为yellow直接提醒运维去维护为green。不过我这边用的es6.2.3yellow是正常查询的。建议你检查一下环境配置应该不是yellow的问题。试了一下;为red都可以正常查询的(java代码查询结果和下图es-head查询结果一致)

在Idea中如何用java代码与es做连接的项目

下面介绍一下如何使用Idea连接TFS服务器,并提交变更的代码到TFS服务器。

一、连接TFS服务器,并下载代码

Figure 1

Figure 2

Figure 3 - 输入TFS服务器的地址,例如:

Figure 4 - 选择服务器代码库地址和本地地址

Figure 5 - 代码下载中

Figure 6 - 选择创建项目

Figure 7

Figure 8 - 继续, 后面几项都是Idea导入代码的界面,省略截屏

Figure 9 - 打开的项目

java导数据到esid重复

,代码主要逻辑如下:

// 读取要导入数据的文件

BufferedReader br = new BufferedReader(new FileReader(

"D:\\test\\test.txt"));

String json = null;

int count = 0;

// 开启批量插入

BulkRequestBuilder bulkRequest = client.prepareBulk();

while ((json = br.readLine()) != null) {

bulkRequest.add(client.prepareIndex("test", "all")

.setSource(json));

// 每一千条提交一次

if (count % 1000 == 0) {

bulkRequest.execute().actionGet();

System.out.println("提交了:" + count);

}

count++;

}

bulkRequest.execute().actionGet();

System.out.println("插入完毕");

br.close();

登录后复制

运行后发现一个问题,我100多万条的数据,导入到es中怎么生成了1000多万条,而且还是在没有完全导入的情况下

然后用小批量数据导入到es,再把这些数据导出来,发现有好多重复的数据

为什么会重复呢,原因是在每一千条提交一次代码这块,第一次一千条提交了,并没有把bulkRequest置空,所以第二次提交的时候,会提交两千条,包括第一次已经提交的一千条,然后我们自己也没有设置_id,所以es会自动给数据生成一个_id,即使是重复的数据,搞清楚了原因,下面来说解决方法,主要有两种:

第一种就是在提交了一千条后,对bulkRequest进行重置,因为bulkRequest并没有重置的方法,所以可以新建一个bulkRequest,类似于重置,具体代码如下:

// 读取要导入数据的文件

BufferedReader br = new BufferedReader(new FileReader(

"D:\\test\\test.txt"));

String json = null;

int count = 0;

// 开启批量插入

BulkRequestBuilder bulkRequest = client.prepareBulk();

while ((json = br.readLine()) != null) {

bulkRequest.add(client.prepareIndex("test", "all")

.setSource(json));

// 每一千条提交一次

if (count % 1000 == 0) {

bulkRequest.execute().actionGet();

//此处新建一个bulkRequest,类似于重置效果

bulkRequest = client.prepareBulk();

System.out.println("提交了:" + count);

}

count++;

}

bulkRequest.execute().actionGet();

System.out.println("插入完毕");

br.close();

登录后复制

第二种就是自己设置_id,确保每一条数据只有一个_id,这样的话,即使数据重复了,因为_id是一样的,所以es会进行更新,这样的话并没有从根源上解决数据重复的问题,只是重复数据会更新,这样的话效率会慢,具体代码如下:

// 读取要导入数据的文件

BufferedReader br = new BufferedReader(new FileReader(

"D:\\test\\test.txt"));

String json = null;

int count = 0;

// 开启批量插入

BulkRequestBuilder bulkRequest = client.prepareBulk();

while ((json = br.readLine()) != null) {

//设置_id为count

bulkRequest.add(client.prepareIndex("test", "all",

String.valueOf(count)).setSource(json));

// 每一千条提交一次

if (count % 1000 == 0) {

bulkRequest.execute().actionGet();

//此处新建一个bulkRequest,类似于重置效果

System.out.println("提交了:" + count);

}

count++;

}

bulkRequest.execute().actionGet();

System.out.println("插入完毕");

br.close();

登录后复制

建议使用第一种方法,效率会快很多。


名称栏目:esjava代码 java代码保存数据
文章网址:http://cdkjz.cn/article/ddsgoop.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220