fix: set tag autocomplete query time range unit to day (#9053)
This commit is contained in:
parent
4bf620045d
commit
c4ebe831af
|
|
@ -25,7 +25,6 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
import org.apache.skywalking.library.elasticsearch.requests.search.BoolQueryBuilder;
|
||||
import org.apache.skywalking.library.elasticsearch.requests.search.Query;
|
||||
import org.apache.skywalking.library.elasticsearch.requests.search.RangeQueryBuilder;
|
||||
import org.apache.skywalking.library.elasticsearch.requests.search.Search;
|
||||
import org.apache.skywalking.library.elasticsearch.requests.search.SearchBuilder;
|
||||
import org.apache.skywalking.library.elasticsearch.requests.search.aggregation.Aggregation;
|
||||
|
|
@ -51,7 +50,7 @@ public class TagAutoCompleteQueryDAO extends EsDAO implements ITagAutoCompleteQu
|
|||
final long startSecondTB,
|
||||
final long endSecondTB) throws IOException {
|
||||
BoolQueryBuilder query = Query.bool();
|
||||
appendTagAutocompleteCondition(tagType, startSecondTB, endSecondTB, query);
|
||||
query.must(Query.term(TagAutocompleteData.TAG_TYPE, tagType.name()));
|
||||
final SearchBuilder search = Search.builder().query(query);
|
||||
search.aggregation(Aggregation.terms(TagAutocompleteData.TAG_KEY)
|
||||
.field(TagAutocompleteData.TAG_KEY));
|
||||
|
|
@ -83,7 +82,7 @@ public class TagAutoCompleteQueryDAO extends EsDAO implements ITagAutoCompleteQu
|
|||
final long startSecondTB,
|
||||
final long endSecondTB) throws IOException {
|
||||
BoolQueryBuilder query = Query.bool().must(Query.term(TagAutocompleteData.TAG_KEY, tagKey));
|
||||
appendTagAutocompleteCondition(tagType, startSecondTB, endSecondTB, query);
|
||||
query.must(Query.term(TagAutocompleteData.TAG_TYPE, tagType.name()));
|
||||
final SearchBuilder search = Search.builder().query(query).size(limit);
|
||||
|
||||
final SearchResponse response = getClient().search(
|
||||
|
|
@ -101,22 +100,4 @@ public class TagAutoCompleteQueryDAO extends EsDAO implements ITagAutoCompleteQu
|
|||
}
|
||||
return tagValues;
|
||||
}
|
||||
|
||||
private void appendTagAutocompleteCondition(final TagType tagType, final long startSecondTB,
|
||||
final long endSecondTB,
|
||||
final BoolQueryBuilder query) {
|
||||
long startMinTB = startSecondTB / 100;
|
||||
long endMinTB = endSecondTB / 100;
|
||||
query.must(Query.term(TagAutocompleteData.TAG_TYPE, tagType.name()));
|
||||
final RangeQueryBuilder rangeQuery = Query.range(TagAutocompleteData.TIME_BUCKET);
|
||||
if (startMinTB > 0) {
|
||||
rangeQuery.gte(startMinTB);
|
||||
}
|
||||
if (endMinTB > 0) {
|
||||
rangeQuery.lte(endMinTB);
|
||||
}
|
||||
if (startMinTB > 0 || endMinTB > 0) {
|
||||
query.must(rangeQuery);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,13 +104,13 @@ public class TagAutoCompleteQueryDAO implements ITagAutoCompleteQueryDAO {
|
|||
final WhereQueryImpl<SelectQueryImpl> query) {
|
||||
query.and(eq(TagAutocompleteData.TAG_TYPE, tagType.name()));
|
||||
|
||||
long startMinTB = startSecondTB / 100;
|
||||
long endMinTB = endSecondTB / 100;
|
||||
if (startMinTB > 0) {
|
||||
query.and(gte(TagAutocompleteData.TIME_BUCKET, startMinTB));
|
||||
long startTB = startSecondTB / 1000000 * 10000;
|
||||
long endTB = endSecondTB / 1000000 * 10000 + 9999;
|
||||
if (startTB > 0) {
|
||||
query.and(gte(TagAutocompleteData.TIME_BUCKET, startTB));
|
||||
}
|
||||
if (endMinTB > 0) {
|
||||
query.and(lte(TagAutocompleteData.TIME_BUCKET, endMinTB));
|
||||
if (endTB > 0) {
|
||||
query.and(lte(TagAutocompleteData.TIME_BUCKET, endTB));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class IoTDBTagAutoCompleteQueryDAO implements ITagAutoCompleteQueryDAO {
|
|||
Map<String, String> indexAndValueMap = new HashMap<>();
|
||||
indexAndValueMap.put(IoTDBIndexes.AUTOCOMPLETE_TAG_TYPE, tagType.name());
|
||||
IoTDBUtils.addQueryIndexValue(TagAutocompleteData.INDEX_NAME, query, indexAndValueMap);
|
||||
appendTagAutocompleteCondition(tagType, startSecondTB, endSecondTB, query);
|
||||
appendTagAutocompleteCondition(startSecondTB, endSecondTB, query);
|
||||
query.append(IoTDBClient.ALIGN_BY_DEVICE);
|
||||
|
||||
SessionPool sessionPool = client.getSessionPool();
|
||||
|
|
@ -93,7 +93,7 @@ public class IoTDBTagAutoCompleteQueryDAO implements ITagAutoCompleteQueryDAO {
|
|||
indexAndValueMap.put(IoTDBIndexes.AUTOCOMPLETE_TAG_KEY, tagKey);
|
||||
indexAndValueMap.put(IoTDBIndexes.AUTOCOMPLETE_TAG_TYPE, tagType.name());
|
||||
IoTDBUtils.addQueryIndexValue(TagAutocompleteData.INDEX_NAME, query, indexAndValueMap);
|
||||
appendTagAutocompleteCondition(tagType, startSecondTB, endSecondTB, query);
|
||||
appendTagAutocompleteCondition(startSecondTB, endSecondTB, query);
|
||||
query.append(" limit ").append(limit).append(IoTDBClient.ALIGN_BY_DEVICE);
|
||||
List<? super StorageData> storageDataList = client.filterQuery(TagAutocompleteData.INDEX_NAME,
|
||||
query.toString(),
|
||||
|
|
@ -109,22 +109,21 @@ public class IoTDBTagAutoCompleteQueryDAO implements ITagAutoCompleteQueryDAO {
|
|||
return tagValues;
|
||||
}
|
||||
|
||||
private void appendTagAutocompleteCondition(final TagType tagType,
|
||||
final long startSecondTB,
|
||||
private void appendTagAutocompleteCondition(final long startSecondTB,
|
||||
final long endSecondTB,
|
||||
final StringBuilder query) {
|
||||
long startMinTB = startSecondTB / 100;
|
||||
long endMinTB = endSecondTB / 100;
|
||||
long startTB = startSecondTB / 1000000 * 10000;
|
||||
long endTB = endSecondTB / 1000000 * 10000 + 9999;
|
||||
|
||||
StringBuilder where = new StringBuilder();
|
||||
if (startMinTB > 0) {
|
||||
where.append(IoTDBClient.TIME).append(" >= ").append(TimeBucket.getTimestamp(startMinTB));
|
||||
if (startTB > 0) {
|
||||
where.append(IoTDBClient.TIME).append(" >= ").append(TimeBucket.getTimestamp(startTB));
|
||||
}
|
||||
if (endMinTB > 0) {
|
||||
if (endTB > 0) {
|
||||
if (where.length() > 0) {
|
||||
where.append(" and ");
|
||||
}
|
||||
where.append(IoTDBClient.TIME).append(" <= ").append(TimeBucket.getTimestamp(endMinTB));
|
||||
where.append(IoTDBClient.TIME).append(" <= ").append(TimeBucket.getTimestamp(endTB));
|
||||
}
|
||||
if (where.length() > 0) {
|
||||
query.append(" where ").append(where);
|
||||
|
|
|
|||
|
|
@ -94,17 +94,17 @@ public class H2TagAutoCompleteQueryDAO implements ITagAutoCompleteQueryDAO {
|
|||
sql.append(TagAutocompleteData.TAG_TYPE).append(" = ?");
|
||||
condition.add(tagType.name());
|
||||
|
||||
long startMinTB = startSecondTB / 100;
|
||||
long endMinTB = endSecondTB / 100;
|
||||
if (startMinTB > 0) {
|
||||
long startTB = startSecondTB / 1000000 * 10000;
|
||||
long endTB = endSecondTB / 1000000 * 10000 + 9999;
|
||||
if (startTB > 0) {
|
||||
sql.append(" and ");
|
||||
sql.append(TagAutocompleteData.TIME_BUCKET).append(">=?");
|
||||
condition.add(startMinTB);
|
||||
condition.add(startTB);
|
||||
}
|
||||
if (endMinTB > 0) {
|
||||
if (endTB > 0) {
|
||||
sql.append(" and ");
|
||||
sql.append(TagAutocompleteData.TIME_BUCKET).append("<=?");
|
||||
condition.add(endMinTB);
|
||||
condition.add(endTB);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue