Java使用ElasticSearch API设置Mapping
2017-07-25 10:59
591 查看
最近一个项目要接PLC下位机的数据存放到ElasticSearch,数据都是double的数值类型,因此在接的时候需要进行Mapping:
"rEva_Photo_x2": {
"type": "double"
},
"AlarmbAlignConvInverter": {
"type": "double"
},
"AlarmbAlignConvLoseErr": {
"type": "double"
},
"AlarmbAlignFor": {
"type": "double"
},
"AlarmbInConvLoseErr": {
"type": "double"
},
"AlarmbLowerlimit": {
"type": "double"
},................ 设置Mapping和接入的代码如下:
@Override
public void saveAideEs(SaveAideEs saveAideEs) {
IndicesExistsResponse indicesResponse =
getClient().admin().indices().exists(
new IndicesExistsRequest().indices(new String[]{saveAideEs.getIndex()})).actionGet();
//如果Index不存在就创建Mapping会报错
if(!indicesResponse.isExists()) {
getClient().admin().indices().prepareCreate(saveAideEs.getIndex()).execute().actionGet();
PutMappingRequest mapping = Requests.putMappingRequest(saveAideEs.getIndex()).type(saveAideEs.getType()).
source(getMapping(saveAideEs.getSource().keySet()));
getClient().admin().indices().putMapping(mapping).actionGet();
}
//写入数据到ElasticSearch
IndexRequestBuilder builder = getClient().prepareIndex(saveAideEs.getIndex(), saveAideEs.getType());
builder.setSource(saveAideEs.getSource());
builder.get();
}
//构造Mapping,keySet包含所有的字段
private XContentBuilder getMapping(Set<String> keySet) {
XContentBuilder mapping = null;
try {
mapping = jsonBuilder()
.startObject().startObject("properties");
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
String str = it.next();
if(str.equals("@timestamp")) //跳过@timestamp字段
continue;
mapping.startObject(str).field("type", "double").field("index","not_analyzed").endObject();
}
mapping.endObject().endObject();
} catch (IOException e) {
e.printStackTrace();
}
return mapping;
} 之后就可以对这些字段进行数值运算了,下面是个使用ElasticSearch-sql的例子:
"rEva_Photo_x2": {
"type": "double"
},
"AlarmbAlignConvInverter": {
"type": "double"
},
"AlarmbAlignConvLoseErr": {
"type": "double"
},
"AlarmbAlignFor": {
"type": "double"
},
"AlarmbInConvLoseErr": {
"type": "double"
},
"AlarmbLowerlimit": {
"type": "double"
},................ 设置Mapping和接入的代码如下:
@Override
public void saveAideEs(SaveAideEs saveAideEs) {
IndicesExistsResponse indicesResponse =
getClient().admin().indices().exists(
new IndicesExistsRequest().indices(new String[]{saveAideEs.getIndex()})).actionGet();
//如果Index不存在就创建Mapping会报错
if(!indicesResponse.isExists()) {
getClient().admin().indices().prepareCreate(saveAideEs.getIndex()).execute().actionGet();
PutMappingRequest mapping = Requests.putMappingRequest(saveAideEs.getIndex()).type(saveAideEs.getType()).
source(getMapping(saveAideEs.getSource().keySet()));
getClient().admin().indices().putMapping(mapping).actionGet();
}
//写入数据到ElasticSearch
IndexRequestBuilder builder = getClient().prepareIndex(saveAideEs.getIndex(), saveAideEs.getType());
builder.setSource(saveAideEs.getSource());
builder.get();
}
//构造Mapping,keySet包含所有的字段
private XContentBuilder getMapping(Set<String> keySet) {
XContentBuilder mapping = null;
try {
mapping = jsonBuilder()
.startObject().startObject("properties");
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
String str = it.next();
if(str.equals("@timestamp")) //跳过@timestamp字段
continue;
mapping.startObject(str).field("type", "double").field("index","not_analyzed").endObject();
}
mapping.endObject().endObject();
} catch (IOException e) {
e.printStackTrace();
}
return mapping;
} 之后就可以对这些字段进行数值运算了,下面是个使用ElasticSearch-sql的例子:
相关文章推荐
- elasticsearch 2.3.4 java API 连接,ik分词器,设置集群节点,创建index,mapping的几种方式
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- elasticsearch创建mappingjavaAPi
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- [ElasticSearch]使用 java API 进行CRUD操作
- java优雅的使用elasticsearch api
- elasticsearch 6.0java api的使用
- Java中使用Preferences 的 API设置用户偏好
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- elasticsearch java客户端api使用(一)
- ElasticSearch java API--创建mapping
- ElasticSearch集群 Java-API 使用
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- 使用Elasticsearch的java api,操作elasticsearch
- Windows下使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- Elasticsearch的Java API使用
- Elasticsearch的java api使用
- elasticsearch java客户端api使用(二)
- Elasticsearch中使用ik分词器 java api
- 使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示