Elasticsearch5.6.3存储字节数组
Index建立
字节数组在Elasticsearch中数据类型对应binary。因此在新建索引时需要注意类型
{
"mappings":{
"tags":{
"_all": {
"enabled": false
},
"jobClass":{
"type": "binary",
"index":false,
"doc_values":false
}
}
}}
java代码插入示例
EsClient.init(config);//封装的es连接池 此处不详细描述
Client client = EsClient.getClient();
//构造请求对象 //构造请求对象
BulkRequestBuilder bulkRequest = client.prepareBulk();
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("jobClass", jobClass).endObject();
bulkRequest.add(client.prepareUpdate(index, type, id).setDoc(builder).setUpsert(builder));
BulkResponse response = bulkRequest.execute().actionGet();
kinbana存储显示
字节 数组被转换为了Base64格式 英文字母格式显示了出来。
读取字节数组
从Elasticsearch获取的response中只有字符串形式,需要再转换为字节数组。
import java.util.Base64;
import java.util.Base64.Decoder;
Map map = client.prepareGet(index, type, list.get(n)).get().getSource();
if (map != null) {
String response = map.get("jobClass").toString();
//将字符串转换为字节数组
Decoder decoder = Base64.getDecoder();
byte[] bs = decoder.decode(response.toString());
}
字节数组可以节省磁盘空间,但是对应的增加了解析的成本。