Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
93165abc
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
93165abc
编写于
2月 01, 2021
作者:
wu-sheng
提交者:
GitHub
2月 01, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Multiple exclude and include query conditions don't work as expected. (#6295)
上级
2739b71d
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
54 addition
and
51 deletion
+54
-51
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/LogQueryEsDAO.java
...ver/storage/plugin/elasticsearch/query/LogQueryEsDAO.java
+27
-25
oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/LogQueryEs7DAO.java
...r/storage/plugin/elasticsearch7/query/LogQueryEs7DAO.java
+27
-26
未找到文件。
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/LogQueryEsDAO.java
浏览文件 @
93165abc
...
...
@@ -20,7 +20,6 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query;
import
java.io.IOException
;
import
java.util.List
;
import
org.apache.skywalking.oap.server.core.Const
;
import
org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord
;
import
org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecord
;
import
org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag
;
...
...
@@ -81,14 +80,13 @@ public class LogQueryEsDAO extends EsDAO implements ILogQueryDAO {
mustQueryList
.
add
(
QueryBuilders
.
rangeQuery
(
Record
.
TIME_BUCKET
).
gte
(
startSecondTB
).
lte
(
endSecondTB
));
}
if
(
isNotEmpty
(
serviceId
))
{
boolQueryBuilder
.
must
()
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SERVICE_ID
,
serviceId
));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SERVICE_ID
,
serviceId
));
}
if
(
isNotEmpty
(
serviceInstanceId
))
{
boolQueryBuilder
.
must
()
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SERVICE_INSTANCE_ID
,
serviceInstanceId
));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SERVICE_INSTANCE_ID
,
serviceInstanceId
));
}
if
(
isNotEmpty
(
endpointId
))
{
boolQueryBuilder
.
must
()
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
ENDPOINT_ID
,
endpointId
));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
ENDPOINT_ID
,
endpointId
));
}
if
(
isNotEmpty
(
endpointName
))
{
String
matchCName
=
MatchCNameBuilder
.
INSTANCE
.
build
(
AbstractLogRecord
.
ENDPOINT_NAME
);
...
...
@@ -96,38 +94,43 @@ public class LogQueryEsDAO extends EsDAO implements ILogQueryDAO {
}
if
(
nonNull
(
relatedTrace
))
{
if
(
isNotEmpty
(
relatedTrace
.
getTraceId
()))
{
boolQueryBuilder
.
must
()
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TRACE_ID
,
relatedTrace
.
getTraceId
()));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TRACE_ID
,
relatedTrace
.
getTraceId
()));
}
if
(
isNotEmpty
(
relatedTrace
.
getSegmentId
()))
{
boolQueryBuilder
.
must
()
.
add
(
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TRACE_SEGMENT_ID
,
relatedTrace
.
getSegmentId
()));
}
if
(
nonNull
(
relatedTrace
.
getSpanId
()))
{
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SPAN_ID
,
relatedTrace
.
getSpanId
()));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SPAN_ID
,
relatedTrace
.
getSpanId
()));
}
}
if
(
CollectionUtils
.
isNotEmpty
(
tags
))
{
BoolQueryBuilder
tagMatchQuery
=
QueryBuilders
.
boolQuery
();
tags
.
forEach
(
tag
->
tagMatchQuery
.
must
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TAGS
,
tag
.
toString
())));
mustQueryList
.
add
(
tagMatchQuery
);
tags
.
forEach
(
tag
->
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TAGS
,
tag
.
toString
())));
}
if
(
CollectionUtils
.
isNotEmpty
(
keywordsOfContent
))
{
keywordsOfContent
.
forEach
(
content
->
mustQueryList
.
add
(
QueryBuilders
.
matchPhraseQuery
(
MatchCNameBuilder
.
INSTANCE
.
build
(
AbstractLogRecord
.
CONTENT
),
String
.
join
(
Const
.
SPACE
,
keywordsOfContent
)
));
content
)
)
);
}
if
(
CollectionUtils
.
isNotEmpty
(
excludingKeywordsOfContent
))
{
boolQueryBuilder
.
mustNot
(
QueryBuilders
.
matchPhraseQuery
(
excludingKeywordsOfContent
.
forEach
(
content
->
boolQueryBuilder
.
mustNot
(
QueryBuilders
.
matchPhraseQuery
(
MatchCNameBuilder
.
INSTANCE
.
build
(
AbstractLogRecord
.
CONTENT
),
String
.
join
(
Const
.
SPACE
,
excludingKeywordsOfContent
)
));
content
)
)
);
}
sourceBuilder
.
sort
(
LogRecord
.
TIMESTAMP
,
Order
.
DES
.
equals
(
queryOrder
)
?
SortOrder
.
DESC
:
SortOrder
.
ASC
);
...
...
@@ -148,9 +151,8 @@ public class LogQueryEsDAO extends EsDAO implements ILogQueryDAO {
log
.
setEndpointName
((
String
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
ENDPOINT_NAME
));
log
.
setTraceId
((
String
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
TRACE_ID
));
log
.
setTimestamp
(
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
TIMESTAMP
).
toString
());
log
.
setContentType
(
ContentType
.
instanceOf
(((
Number
)
searchHit
.
getSourceAsMap
()
.
get
(
AbstractLogRecord
.
CONTENT_TYPE
)).
intValue
()));
log
.
setContentType
(
ContentType
.
instanceOf
(
((
Number
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
CONTENT_TYPE
)).
intValue
()));
log
.
setContent
((
String
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
CONTENT
));
String
dataBinaryBase64
=
(
String
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
TAGS_RAW_DATA
);
if
(!
Strings
.
isNullOrEmpty
(
dataBinaryBase64
))
{
...
...
oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/LogQueryEs7DAO.java
浏览文件 @
93165abc
...
...
@@ -20,7 +20,6 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch7.query;
import
java.io.IOException
;
import
java.util.List
;
import
org.apache.skywalking.oap.server.core.Const
;
import
org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord
;
import
org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecord
;
import
org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag
;
...
...
@@ -82,15 +81,13 @@ public class LogQueryEs7DAO extends EsDAO implements ILogQueryDAO {
}
if
(
isNotEmpty
(
serviceId
))
{
boolQueryBuilder
.
must
()
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SERVICE_ID
,
serviceId
));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SERVICE_ID
,
serviceId
));
}
if
(
isNotEmpty
(
serviceInstanceId
))
{
boolQueryBuilder
.
must
()
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SERVICE_INSTANCE_ID
,
serviceInstanceId
));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SERVICE_INSTANCE_ID
,
serviceInstanceId
));
}
if
(
isNotEmpty
(
endpointId
))
{
boolQueryBuilder
.
must
()
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
ENDPOINT_ID
,
endpointId
));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
ENDPOINT_ID
,
endpointId
));
}
if
(
isNotEmpty
(
endpointName
))
{
String
matchCName
=
MatchCNameBuilder
.
INSTANCE
.
build
(
AbstractLogRecord
.
ENDPOINT_NAME
);
...
...
@@ -98,38 +95,43 @@ public class LogQueryEs7DAO extends EsDAO implements ILogQueryDAO {
}
if
(
nonNull
(
relatedTrace
))
{
if
(
isNotEmpty
(
relatedTrace
.
getTraceId
()))
{
boolQueryBuilder
.
must
()
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TRACE_ID
,
relatedTrace
.
getTraceId
()));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TRACE_ID
,
relatedTrace
.
getTraceId
()));
}
if
(
isNotEmpty
(
relatedTrace
.
getSegmentId
()))
{
boolQueryBuilder
.
must
()
.
add
(
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TRACE_SEGMENT_ID
,
relatedTrace
.
getSegmentId
()));
}
if
(
nonNull
(
relatedTrace
.
getSpanId
()))
{
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SPAN_ID
,
relatedTrace
.
getSpanId
()));
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
SPAN_ID
,
relatedTrace
.
getSpanId
()));
}
}
if
(
CollectionUtils
.
isNotEmpty
(
tags
))
{
BoolQueryBuilder
tagMatchQuery
=
QueryBuilders
.
boolQuery
();
tags
.
forEach
(
tag
->
tagMatchQuery
.
must
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TAGS
,
tag
.
toString
())));
mustQueryList
.
add
(
tagMatchQuery
);
tags
.
forEach
(
tag
->
mustQueryList
.
add
(
QueryBuilders
.
termQuery
(
AbstractLogRecord
.
TAGS
,
tag
.
toString
())));
}
if
(
CollectionUtils
.
isNotEmpty
(
keywordsOfContent
))
{
keywordsOfContent
.
forEach
(
content
->
mustQueryList
.
add
(
QueryBuilders
.
matchPhraseQuery
(
MatchCNameBuilder
.
INSTANCE
.
build
(
AbstractLogRecord
.
CONTENT
),
String
.
join
(
Const
.
SPACE
,
keywordsOfContent
)
));
content
)
)
);
}
if
(
CollectionUtils
.
isNotEmpty
(
excludingKeywordsOfContent
))
{
boolQueryBuilder
.
mustNot
(
QueryBuilders
.
matchPhraseQuery
(
excludingKeywordsOfContent
.
forEach
(
content
->
boolQueryBuilder
.
mustNot
(
QueryBuilders
.
matchPhraseQuery
(
MatchCNameBuilder
.
INSTANCE
.
build
(
AbstractLogRecord
.
CONTENT
),
String
.
join
(
Const
.
SPACE
,
excludingKeywordsOfContent
)
));
content
)
)
);
}
sourceBuilder
.
sort
(
LogRecord
.
TIMESTAMP
,
Order
.
DES
.
equals
(
queryOrder
)
?
SortOrder
.
DESC
:
SortOrder
.
ASC
);
...
...
@@ -149,9 +151,8 @@ public class LogQueryEs7DAO extends EsDAO implements ILogQueryDAO {
log
.
setEndpointName
((
String
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
ENDPOINT_NAME
));
log
.
setTraceId
((
String
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
TRACE_ID
));
log
.
setTimestamp
(
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
TIMESTAMP
).
toString
());
log
.
setContentType
(
ContentType
.
instanceOf
(((
Number
)
searchHit
.
getSourceAsMap
()
.
get
(
AbstractLogRecord
.
CONTENT_TYPE
)).
intValue
()));
log
.
setContentType
(
ContentType
.
instanceOf
(
((
Number
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
CONTENT_TYPE
)).
intValue
()));
log
.
setContent
((
String
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
CONTENT
));
String
dataBinaryBase64
=
(
String
)
searchHit
.
getSourceAsMap
().
get
(
AbstractLogRecord
.
TAGS_RAW_DATA
);
if
(!
Strings
.
isNullOrEmpty
(
dataBinaryBase64
))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录