use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project pancm_project by xuwujing.
the class EsAggregationSearchTest method havingSearch.
/**
* @Author pancm
* @Description having
* @Date 2020/8/21
* @Param []
* @return void
*/
private static void havingSearch() throws IOException {
String index = "";
SearchRequest searchRequest = new SearchRequest(index);
searchRequest.indices(index);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
searchRequest.indicesOptions(IndicesOptions.lenientExpandOpen());
String alias_name = "nas_ip_address_group";
String group_name = "nas_ip_address";
String query_name = "acct_start_time";
String query_type = "gte,lte";
String query_name_value = "2020-08-05 13:25:55,2020-08-20 13:26:55";
String[] query_types = query_type.split(",");
String[] query_name_values = query_name_value.split(",");
for (int i = 0; i < query_types.length; i++) {
if ("gte".equals(query_types[i])) {
boolQueryBuilder.must(QueryBuilders.rangeQuery(query_name).gte(query_name_values[i]));
}
if ("lte".equals(query_types[i])) {
boolQueryBuilder.must(QueryBuilders.rangeQuery(query_name).lte(query_name_values[i]));
}
}
AggregationBuilder aggregationBuilder = AggregationBuilders.terms(alias_name).field(group_name).size(Integer.MAX_VALUE);
// 声明BucketPath,用于后面的bucket筛选
Map<String, String> bucketsPathsMap = new HashMap<>(8);
bucketsPathsMap.put("groupCount", "_count");
// 设置脚本
Script script = new Script("params.groupCount >= 1000");
// 构建bucket选择器
BucketSelectorPipelineAggregationBuilder bs = PipelineAggregatorBuilders.bucketSelector("having", bucketsPathsMap, script);
aggregationBuilder.subAggregation(bs);
sourceBuilder.aggregation(aggregationBuilder);
// 不需要解释
sourceBuilder.explain(false);
// 不需要原始数据
sourceBuilder.fetchSource(false);
// 不需要版本号
sourceBuilder.version(false);
sourceBuilder.query(boolQueryBuilder);
searchRequest.source(sourceBuilder);
System.out.println(sourceBuilder);
// 同步查询
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// 查询条数
long count = searchResponse.getHits().getHits().length;
Aggregations aggregations = searchResponse.getAggregations();
// agg(aggregations);
Map<String, Object> map = new HashMap<>();
List<Map<String, Object>> list = new ArrayList<>();
agg(list, aggregations);
// System.out.println(map);
System.out.println(list);
}
use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project pancm_project by xuwujing.
the class EsHighLevelRestTest1 method updateByQuery.
/**
* 根据查询条件更新
*
* @throws IOException
*/
private static void updateByQuery() throws IOException {
String type = "_doc";
String index = "test1";
//
UpdateByQueryRequest request = new UpdateByQueryRequest(index, type);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.must(QueryBuilders.termQuery("user", "pancm"));
// Script script = new Script(ScriptType.INLINE, SCRIPT_NAME, id, map);
// boolQueryBuilder.must(QueryBuilders.scriptQuery(script));
// boolQueryBuilder.must(QueryBuilders.scriptQuery(script));
// // 设置查询条件
// request.setQuery(new TermQueryBuilder("user", "pancm"));
// 设置复制文档的数量
request.setSize(10);
// 设置一次批量处理的条数,默认是1000
request.setBatchSize(100);
// 设置超时时间
request.setTimeout(TimeValue.timeValueMinutes(2));
// 索引选项
request.setIndicesOptions(IndicesOptions.LENIENT_EXPAND_OPEN);
// 同步执行
BulkByScrollResponse bulkResponse = client.updateByQuery(request, RequestOptions.DEFAULT);
// 异步执行
// client.updateByQueryAsync(request, RequestOptions.DEFAULT, listener);
// 返回结果
TimeValue timeTaken = bulkResponse.getTook();
boolean timedOut = bulkResponse.isTimedOut();
long totalDocs = bulkResponse.getTotal();
long updatedDocs = bulkResponse.getUpdated();
long deletedDocs = bulkResponse.getDeleted();
long batches = bulkResponse.getBatches();
long noops = bulkResponse.getNoops();
long versionConflicts = bulkResponse.getVersionConflicts();
long bulkRetries = bulkResponse.getBulkRetries();
long searchRetries = bulkResponse.getSearchRetries();
TimeValue throttledMillis = bulkResponse.getStatus().getThrottled();
TimeValue throttledUntilMillis = bulkResponse.getStatus().getThrottledUntil();
List<ScrollableHitSource.SearchFailure> searchFailures = bulkResponse.getSearchFailures();
List<BulkItemResponse.Failure> bulkFailures = bulkResponse.getBulkFailures();
System.out.println("查询更新总共花费了:" + timeTaken.getMillis() + " 毫秒,总条数:" + totalDocs + ",更新数:" + updatedDocs);
}
use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project uavstack by uavorg.
the class InvokeChainQueryHandler method parseSearchCondition.
/**
* parseSearchCondition
*
* 如果用空格分开多个关键字,则默认为或的关系
*
* 如果某些关键字是以+连接,代表与关系
*
* 注意这里只支持或优先的操作
*
* 举例: <kwd1>+<kwd2> <kwd3> <kwd4>
*
* 则代表的是意思是(kwd1 and kwd2 同时存在)或kwd3存在或kwd4存在
*
* @param queryBuilder
* @param content
*/
private void parseSearchCondition(BoolQueryBuilder queryBuilder, String content, String field) {
if (content == null) {
return;
}
boolean hasCompandSearch = (content.indexOf("+") > -1) ? true : false;
if (hasCompandSearch == false) {
if (content.indexOf("*") == -1) {
queryBuilder.must(QueryBuilders.matchQuery(field, content));
} else {
queryBuilder.must(QueryBuilders.wildcardQuery(field + ".keyword", content));
}
} else {
BoolQueryBuilder orQueryBuilder = QueryBuilders.boolQuery();
String[] orKwds = content.split(" ");
for (String orKwd : orKwds) {
/**
* 如果没有与关系,就检查是否有*
*/
if (orKwd.indexOf("+") == -1) {
if (orKwd.indexOf("*") == -1) {
orQueryBuilder.should(QueryBuilders.matchQuery(field, orKwd));
} else {
orQueryBuilder.should(QueryBuilders.wildcardQuery(field + ".keyword", orKwd));
}
} else {
/**
* 或关系,检查是否有*
*/
String[] andKwds = orKwd.split("\\+");
BoolQueryBuilder andQueryBuilder = QueryBuilders.boolQuery();
for (String andKwd : andKwds) {
if (andKwd.indexOf("*") == -1) {
andQueryBuilder.must(QueryBuilders.matchQuery(field, andKwd));
} else {
andQueryBuilder.must(QueryBuilders.wildcardQuery(field + ".keyword", andKwd));
}
}
orQueryBuilder.should(andQueryBuilder);
}
}
queryBuilder.must(orQueryBuilder);
}
}
use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project uavstack by uavorg.
the class InvokeChainQueryHandler method queryByApp.
/**
* 从应用维度对调用链进行查询
*
* @param data
*/
@SuppressWarnings("rawtypes")
private void queryByApp(UAVHttpMessage data) {
long startTime = DataConvertHelper.toLong(data.getRequest("stime"), -1);
long endTime = DataConvertHelper.toLong(data.getRequest("etime"), -1);
if (startTime == -1 || endTime == -1 || endTime < startTime) {
data.putResponse("rs", "ERR");
data.putResponse("msg", "The Time Range Error: startTime=" + startTime + ",endTime=" + endTime);
return;
}
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.must(QueryBuilders.rangeQuery("stime").gte(startTime).lte(endTime));
String ipport = data.getRequest("ipport");
if (ipport != null) {
queryBuilder.must(QueryBuilders.matchQuery("ipport", ipport));
}
String appid = data.getRequest("appid");
if (appid != null) {
queryBuilder.must(QueryBuilders.matchQuery("appid", appid));
}
String appuuid = data.getRequest("appuuid");
if (appuuid != null) {
queryBuilder.must(QueryBuilders.termQuery("appuuid", appuuid));
}
String appgroup = data.getRequest("appgroup");
if (appgroup != null) {
queryBuilder.must(QueryBuilders.matchQuery("appgroup", appgroup));
}
String eptype = data.getRequest("eptype");
if (eptype != null) {
BoolQueryBuilder typeQuery = QueryBuilders.boolQuery();
String[] types = eptype.split(",");
for (String type : types) {
typeQuery.should(QueryBuilders.matchQuery("eptype", type));
}
queryBuilder.must(typeQuery);
}
String cls = data.getRequest("class");
if (cls != null) {
parseSearchCondition(queryBuilder, cls, "class");
}
String method = data.getRequest("method");
if (method != null) {
parseSearchCondition(queryBuilder, method, "method");
}
String url = data.getRequest("url");
if (url != null) {
parseSearchCondition(queryBuilder, url, "url");
}
String state = data.getRequest("state");
if (state != null) {
parseSearchCondition(queryBuilder, state, "state");
}
SortBuilder[] sorts = buildSort(data);
this.queryToList(data, queryBuilder, null, sorts);
}
use of org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder in project uavstack by uavorg.
the class SlowOperQueryHandler method queryByParams.
/**
* 自由组合参数查询
*
* @param data
*/
@SuppressWarnings("rawtypes")
private void queryByParams(UAVHttpMessage data) {
String appid = data.getRequest("appid");
if (appid == null) {
data.putResponse("rs", "ERR");
data.putResponse("msg", "appid is required");
return;
}
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.must(QueryBuilders.matchQuery("appid", appid));
if (data.getRequest("traceid") != null) {
queryBuilder.must(QueryBuilders.matchQuery("traceid", data.getRequest("traceid")));
}
if (data.getRequest("spanid") != null) {
queryBuilder.must(QueryBuilders.matchQuery("spanid", data.getRequest("spanid")));
}
if (data.getRequest("epinfo") != null) {
queryBuilder.must(QueryBuilders.matchQuery("epinfo", data.getRequest("epinfo")));
}
BoolQueryBuilder queryBuilderInner = QueryBuilders.boolQuery();
if (data.getRequest("rpc_req_head") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("rpc_req_head", data.getRequest("rpc_req_head")));
}
if (data.getRequest("rpc_req_body") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("rpc_req_body", data.getRequest("rpc_req_body")));
}
if (data.getRequest("rpc_rsp_head") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("rpc_rsp_head", data.getRequest("rpc_rsp_head")));
}
if (data.getRequest("rpc_rsp_body") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("rpc_rsp_body", data.getRequest("rpc_rsp_body")));
}
if (data.getRequest("rpc_rsp_exception") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("rpc_rsp_exception", data.getRequest("rpc_rsp_exception")));
}
if (data.getRequest("sql_req") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("sql_req", data.getRequest("sql_req")));
}
if (data.getRequest("sql_ret") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("sql_ret", data.getRequest("sql_ret")));
}
if (data.getRequest("method_req") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("method_req", data.getRequest("method_req")));
}
if (data.getRequest("method_ret") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("method_ret", data.getRequest("method_ret")));
}
if (data.getRequest("mq_head") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("mq_head", data.getRequest("mq_head")));
}
if (data.getRequest("mq_body") != null) {
queryBuilderInner.should(QueryBuilders.matchQuery("mq_body", data.getRequest("mq_body")));
}
queryBuilder.must(queryBuilderInner);
SortBuilder[] sorts = buildSort(data);
this.queryToList(data, queryBuilder, null, sorts);
}
Aggregations