提交 118485fb 编写于 作者: 彭勇升 pengys 提交者: wu-sheng

Make the elasticsearch json object build to be a public method. (#2648)

上级 3a318128
......@@ -18,10 +18,14 @@
package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base;
import java.io.IOException;
import java.util.Map;
import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
import org.apache.skywalking.oap.server.core.query.sql.Where;
import org.apache.skywalking.oap.server.core.storage.AbstractDAO;
import org.apache.skywalking.oap.server.core.storage.type.StorageDataType;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
import org.elasticsearch.common.xcontent.*;
import org.elasticsearch.index.query.*;
import org.elasticsearch.search.builder.SearchSourceBuilder;
......@@ -34,7 +38,7 @@ public abstract class EsDAO extends AbstractDAO<ElasticSearchClient> {
super(client);
}
public final void queryBuild(SearchSourceBuilder sourceBuilder, Where where, long startTB, long endTB) {
protected final void queryBuild(SearchSourceBuilder sourceBuilder, Where where, long startTB, long endTB) {
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(Metrics.TIME_BUCKET).gte(startTB).lte(endTB);
if (where.getKeyValues().isEmpty()) {
sourceBuilder.query(rangeQueryBuilder);
......@@ -53,4 +57,19 @@ public abstract class EsDAO extends AbstractDAO<ElasticSearchClient> {
}
sourceBuilder.size(0);
}
XContentBuilder map2builder(Map<String, Object> objectMap) throws IOException {
XContentBuilder builder = XContentFactory.jsonBuilder().startObject();
for (String key : objectMap.keySet()) {
Object value = objectMap.get(key);
if (value instanceof StorageDataType) {
builder.field(key, ((StorageDataType)value).toStorageData());
} else {
builder.field(key, value);
}
}
builder.endObject();
return builder;
}
}
......@@ -18,13 +18,10 @@
package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base;
import java.io.IOException;
import org.apache.skywalking.oap.server.core.storage.IHistoryDeleteDAO;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import org.slf4j.*;
/**
* @author peng-yongsheng
......
......@@ -19,27 +19,22 @@
package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base;
import java.io.IOException;
import java.util.Map;
import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
import org.apache.skywalking.oap.server.core.storage.*;
import org.apache.skywalking.oap.server.core.storage.type.StorageDataType;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.common.xcontent.*;
import org.slf4j.*;
import org.elasticsearch.common.xcontent.XContentBuilder;
/**
* @author peng-yongsheng
*/
public class MetricsEsDAO extends EsDAO implements IMetricsDAO<IndexRequest, UpdateRequest> {
private static final Logger logger = LoggerFactory.getLogger(MetricsEsDAO.class);
private final StorageBuilder<Metrics> storageBuilder;
public MetricsEsDAO(ElasticSearchClient client, StorageBuilder<Metrics> storageBuilder) {
MetricsEsDAO(ElasticSearchClient client, StorageBuilder<Metrics> storageBuilder) {
super(client);
this.storageBuilder = storageBuilder;
}
......@@ -54,34 +49,12 @@ public class MetricsEsDAO extends EsDAO implements IMetricsDAO<IndexRequest, Upd
}
@Override public IndexRequest prepareBatchInsert(String modelName, Metrics metrics) throws IOException {
Map<String, Object> objectMap = storageBuilder.data2Map(metrics);
XContentBuilder builder = XContentFactory.jsonBuilder().startObject();
for (String key : objectMap.keySet()) {
Object value = objectMap.get(key);
if (value instanceof StorageDataType) {
builder.field(key, ((StorageDataType)value).toStorageData());
} else {
builder.field(key, value);
}
}
builder.endObject();
XContentBuilder builder = map2builder(storageBuilder.data2Map(metrics));
return getClient().prepareInsert(modelName, metrics.id(), builder);
}
@Override public UpdateRequest prepareBatchUpdate(String modelName, Metrics metrics) throws IOException {
Map<String, Object> objectMap = storageBuilder.data2Map(metrics);
XContentBuilder builder = XContentFactory.jsonBuilder().startObject();
for (String key : objectMap.keySet()) {
Object value = objectMap.get(key);
if (value instanceof StorageDataType) {
builder.field(key, ((StorageDataType)value).toStorageData());
} else {
builder.field(key, value);
}
}
builder.endObject();
XContentBuilder builder = map2builder(storageBuilder.data2Map(metrics));
return getClient().prepareUpdate(modelName, metrics.id(), builder);
}
}
......@@ -19,13 +19,11 @@
package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base;
import java.io.IOException;
import java.util.Map;
import org.apache.skywalking.oap.server.core.analysis.record.Record;
import org.apache.skywalking.oap.server.core.storage.*;
import org.apache.skywalking.oap.server.core.storage.type.StorageDataType;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.common.xcontent.*;
import org.elasticsearch.common.xcontent.XContentBuilder;
/**
* @author peng-yongsheng
......@@ -34,24 +32,13 @@ public class RecordEsDAO extends EsDAO implements IRecordDAO<IndexRequest> {
private final StorageBuilder<Record> storageBuilder;
public RecordEsDAO(ElasticSearchClient client, StorageBuilder<Record> storageBuilder) {
RecordEsDAO(ElasticSearchClient client, StorageBuilder<Record> storageBuilder) {
super(client);
this.storageBuilder = storageBuilder;
}
@Override public IndexRequest prepareBatchInsert(String modelName, Record record) throws IOException {
Map<String, Object> objectMap = storageBuilder.data2Map(record);
XContentBuilder builder = XContentFactory.jsonBuilder().startObject();
for (String key : objectMap.keySet()) {
Object value = objectMap.get(key);
if (value instanceof StorageDataType) {
builder.field(key, ((StorageDataType)value).toStorageData());
} else {
builder.field(key, value);
}
}
builder.endObject();
XContentBuilder builder = map2builder(storageBuilder.data2Map(record));
return getClient().prepareInsert(modelName, record.id(), builder);
}
}
......@@ -19,24 +19,20 @@
package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base;
import java.io.IOException;
import java.util.Map;
import org.apache.skywalking.oap.server.core.register.RegisterSource;
import org.apache.skywalking.oap.server.core.storage.*;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.common.xcontent.*;
import org.slf4j.*;
import org.elasticsearch.common.xcontent.XContentBuilder;
/**
* @author peng-yongsheng
*/
public class RegisterEsDAO extends EsDAO implements IRegisterDAO {
private static final Logger logger = LoggerFactory.getLogger(RegisterEsDAO.class);
private final StorageBuilder<RegisterSource> storageBuilder;
public RegisterEsDAO(ElasticSearchClient client, StorageBuilder<RegisterSource> storageBuilder) {
RegisterEsDAO(ElasticSearchClient client, StorageBuilder<RegisterSource> storageBuilder) {
super(client);
this.storageBuilder = storageBuilder;
}
......@@ -51,24 +47,12 @@ public class RegisterEsDAO extends EsDAO implements IRegisterDAO {
}
@Override public void forceInsert(String modelName, RegisterSource source) throws IOException {
XContentBuilder builder = build(source);
XContentBuilder builder = map2builder(storageBuilder.data2Map(source));
getClient().forceInsert(modelName, source.id(), builder);
}
@Override public void forceUpdate(String modelName, RegisterSource source) throws IOException {
XContentBuilder builder = build(source);
XContentBuilder builder = map2builder(storageBuilder.data2Map(source));
getClient().forceUpdate(modelName, source.id(), builder);
}
private XContentBuilder build(RegisterSource source) throws IOException {
Map<String, Object> objectMap = storageBuilder.data2Map(source);
XContentBuilder builder = XContentFactory.jsonBuilder().startObject();
for (String key : objectMap.keySet()) {
builder.field(key, objectMap.get(key));
}
builder.endObject();
return builder;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册