Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
javalover123888
SkyWalking
提交
e83e175a
S
SkyWalking
项目概览
javalover123888
/
SkyWalking
与 Fork 源项目一致
Fork自
山不在高_有仙则灵 / SkyWalking
通知
2
Star
0
Fork
0
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
e83e175a
编写于
9月 23, 2018
作者:
彭
彭勇升 pengys
提交者:
wu-sheng
9月 23, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Meta data query implementation are all finished. (#1692)
上级
7d3e699e
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
292 addition
and
99 deletion
+292
-99
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
...kywalking/oap/server/core/query/MetadataQueryService.java
+11
-9
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Call.java
.../apache/skywalking/oap/server/core/query/entity/Call.java
+2
-0
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java
...che/skywalking/oap/server/core/query/entity/Endpoint.java
+4
-0
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LanguageTrans.java
...kywalking/oap/server/core/query/entity/LanguageTrans.java
+64
-0
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/EndpointInventory.java
...kywalking/oap/server/core/register/EndpointInventory.java
+2
-2
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java
...ng/oap/server/core/register/ServiceInstanceInventory.java
+13
-7
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/Column.java
...skywalking/oap/server/core/storage/annotation/Column.java
+0
-2
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageAnnotationListener.java
...er/core/storage/annotation/StorageAnnotationListener.java
+1
-1
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/Model.java
...pache/skywalking/oap/server/core/storage/model/Model.java
+3
-2
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/ModelColumn.java
...skywalking/oap/server/core/storage/model/ModelColumn.java
+6
-3
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/ModelInstaller.java
...walking/oap/server/core/storage/model/ModelInstaller.java
+1
-1
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
...king/oap/server/core/storage/query/IMetadataQueryDAO.java
+12
-1
oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
.../skywalking/oap/query/graphql/resolver/MetadataQuery.java
+9
-9
oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
...in/query-graphql-plugin/src/main/resources/query-protocol
+1
-1
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/MatchCNameBuilder.java
.../storage/plugin/elasticsearch/base/MatchCNameBuilder.java
+32
-0
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/StorageEsInstaller.java
...storage/plugin/elasticsearch/base/StorageEsInstaller.java
+20
-6
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
...torage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
+111
-55
未找到文件。
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
浏览文件 @
e83e175a
...
...
@@ -19,7 +19,7 @@
package
org.apache.skywalking.oap.server.core.query
;
import
java.io.IOException
;
import
java.util.
*
;
import
java.util.
List
;
import
org.apache.skywalking.apm.network.language.agent.SpanLayer
;
import
org.apache.skywalking.oap.server.core.query.entity.*
;
import
org.apache.skywalking.oap.server.core.storage.StorageModule
;
...
...
@@ -59,20 +59,22 @@ public class MetadataQueryService implements org.apache.skywalking.oap.server.li
return
getMetadataQueryDAO
().
getAllServices
(
startTimestamp
,
endTimestamp
);
}
public
List
<
Service
>
searchServices
(
final
long
startTimestamp
,
final
long
endTimestamp
,
final
String
keyword
)
{
return
Collections
.
emptyList
();
public
List
<
Service
>
searchServices
(
final
long
startTimestamp
,
final
long
endTimestamp
,
final
String
keyword
)
throws
IOException
{
return
getMetadataQueryDAO
().
searchServices
(
startTimestamp
,
endTimestamp
,
keyword
);
}
public
List
<
ServiceInstance
>
getServiceInstances
(
final
long
startTimestamp
,
final
long
endTimestamp
,
final
String
id
)
{
return
Collections
.
emptyList
(
);
final
String
serviceId
)
throws
IOException
{
return
getMetadataQueryDAO
().
getServiceInstances
(
startTimestamp
,
endTimestamp
,
serviceId
);
}
public
List
<
Endpoint
>
searchEndpoint
(
final
String
keyword
,
final
String
serviceId
,
final
int
limit
)
{
return
Collections
.
emptyList
();
public
List
<
Endpoint
>
searchEndpoint
(
final
String
keyword
,
final
String
serviceId
,
final
int
limit
)
throws
IOException
{
return
getMetadataQueryDAO
().
searchEndpoint
(
keyword
,
serviceId
,
limit
);
}
public
Service
searchService
(
final
long
startTimestamp
,
final
long
endTimestamp
,
final
String
serviceCode
)
{
return
new
Service
(
);
public
Service
searchService
(
final
String
serviceCode
)
throws
IOException
{
return
getMetadataQueryDAO
().
searchService
(
serviceCode
);
}
}
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Call.java
浏览文件 @
e83e175a
...
...
@@ -19,6 +19,7 @@
package
org.apache.skywalking.oap.server.core.query.entity
;
import
lombok.*
;
import
org.apache.skywalking.oap.server.core.source.DetectPoint
;
@Getter
@Setter
...
...
@@ -27,4 +28,5 @@ public class Call {
private
int
target
;
private
String
callType
;
private
String
id
;
private
DetectPoint
detectPoint
;
}
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java
浏览文件 @
e83e175a
...
...
@@ -18,6 +18,10 @@
package
org.apache.skywalking.oap.server.core.query.entity
;
import
lombok.*
;
@Getter
@Setter
public
class
Endpoint
{
private
String
id
;
private
String
name
;
...
...
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LanguageTrans.java
0 → 100644
浏览文件 @
e83e175a
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
org.apache.skywalking.oap.server.core.query.entity
;
/**
* @author peng-yongsheng
*/
public
enum
LanguageTrans
{
INSTANCE
;
public
int
id
(
Language
language
)
{
switch
(
language
)
{
case
UNKNOWN:
return
1
;
case
JAVA:
return
2
;
case
DOTNET:
return
3
;
case
NODEJS:
return
4
;
case
PYTHON:
return
5
;
case
RUBY:
return
6
;
default
:
return
1
;
}
}
public
Language
value
(
int
id
)
{
switch
(
id
)
{
case
1
:
return
Language
.
UNKNOWN
;
case
2
:
return
Language
.
JAVA
;
case
3
:
return
Language
.
DOTNET
;
case
4
:
return
Language
.
NODEJS
;
case
5
:
return
Language
.
PYTHON
;
case
6
:
return
Language
.
RUBY
;
default
:
return
Language
.
UNKNOWN
;
}
}
}
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/EndpointInventory.java
浏览文件 @
e83e175a
...
...
@@ -38,8 +38,8 @@ public class EndpointInventory extends RegisterSource {
public
static
final
String
MODEL_NAME
=
"endpoint_inventory"
;
p
rivate
static
final
String
SERVICE_ID
=
"service_id"
;
p
rivate
static
final
String
NAME
=
"name"
;
p
ublic
static
final
String
SERVICE_ID
=
"service_id"
;
p
ublic
static
final
String
NAME
=
"name"
;
public
static
final
String
DETECT_POINT
=
"detect_point"
;
@Setter
@Getter
@Column
(
columnName
=
SERVICE_ID
)
private
int
serviceId
;
...
...
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java
浏览文件 @
e83e175a
...
...
@@ -42,16 +42,18 @@ public class ServiceInstanceInventory extends RegisterSource {
public
static
final
String
MODEL_NAME
=
"service_instance_inventory"
;
public
static
final
String
NAME
=
"name"
;
p
rivate
static
final
String
SERVICE_ID
=
"service_id"
;
p
ublic
static
final
String
SERVICE_ID
=
"service_id"
;
private
static
final
String
IS_ADDRESS
=
"is_address"
;
private
static
final
String
ADDRESS_ID
=
"address_id"
;
private
static
final
String
OS_NAME
=
"os_name"
;
private
static
final
String
HOST_NAME
=
"host_name"
;
private
static
final
String
PROCESS_NO
=
"process_no"
;
private
static
final
String
IPV4S
=
"ipv4s"
;
public
static
final
String
LANGUAGE
=
"language"
;
@Setter
@Getter
@Column
(
columnName
=
NAME
,
matchQuery
=
true
)
private
String
name
=
Const
.
EMPTY_STRING
;
@Setter
@Getter
@Column
(
columnName
=
SERVICE_ID
)
private
int
serviceId
;
@Setter
@Getter
@Column
(
columnName
=
LANGUAGE
)
private
int
language
;
@Setter
@Getter
@Column
(
columnName
=
IS_ADDRESS
)
private
int
isAddress
;
@Setter
@Getter
@Column
(
columnName
=
ADDRESS_ID
)
private
int
addressId
;
@Setter
@Getter
@Column
(
columnName
=
OS_NAME
)
private
String
osName
;
...
...
@@ -109,9 +111,10 @@ public class ServiceInstanceInventory extends RegisterSource {
RemoteData
.
Builder
remoteBuilder
=
RemoteData
.
newBuilder
();
remoteBuilder
.
setDataIntegers
(
0
,
getSequence
());
remoteBuilder
.
setDataIntegers
(
1
,
serviceId
);
remoteBuilder
.
setDataIntegers
(
2
,
isAddress
);
remoteBuilder
.
setDataIntegers
(
3
,
addressId
);
remoteBuilder
.
setDataIntegers
(
4
,
processNo
);
remoteBuilder
.
setDataIntegers
(
2
,
language
);
remoteBuilder
.
setDataIntegers
(
3
,
isAddress
);
remoteBuilder
.
setDataIntegers
(
4
,
addressId
);
remoteBuilder
.
setDataIntegers
(
5
,
processNo
);
remoteBuilder
.
setDataLongs
(
0
,
getRegisterTime
());
remoteBuilder
.
setDataLongs
(
1
,
getHeartbeatTime
());
...
...
@@ -126,9 +129,10 @@ public class ServiceInstanceInventory extends RegisterSource {
@Override
public
void
deserialize
(
RemoteData
remoteData
)
{
setSequence
(
remoteData
.
getDataIntegers
(
0
));
setServiceId
(
remoteData
.
getDataIntegers
(
1
));
setIsAddress
(
remoteData
.
getDataIntegers
(
2
));
setAddressId
(
remoteData
.
getDataIntegers
(
3
));
setProcessNo
(
remoteData
.
getDataIntegers
(
4
));
setLanguage
(
remoteData
.
getDataIntegers
(
2
));
setIsAddress
(
remoteData
.
getDataIntegers
(
3
));
setAddressId
(
remoteData
.
getDataIntegers
(
4
));
setProcessNo
(
remoteData
.
getDataIntegers
(
5
));
setRegisterTime
(
remoteData
.
getDataLongs
(
0
));
setHeartbeatTime
(
remoteData
.
getDataLongs
(
1
));
...
...
@@ -149,6 +153,7 @@ public class ServiceInstanceInventory extends RegisterSource {
ServiceInstanceInventory
inventory
=
new
ServiceInstanceInventory
();
inventory
.
setSequence
((
Integer
)
dbMap
.
get
(
SEQUENCE
));
inventory
.
setServiceId
((
Integer
)
dbMap
.
get
(
SERVICE_ID
));
inventory
.
setLanguage
((
Integer
)
dbMap
.
get
(
LANGUAGE
));
inventory
.
setIsAddress
((
Integer
)
dbMap
.
get
(
IS_ADDRESS
));
inventory
.
setAddressId
((
Integer
)
dbMap
.
get
(
ADDRESS_ID
));
inventory
.
setProcessNo
((
Integer
)
dbMap
.
get
(
PROCESS_NO
));
...
...
@@ -167,6 +172,7 @@ public class ServiceInstanceInventory extends RegisterSource {
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
SEQUENCE
,
storageData
.
getSequence
());
map
.
put
(
SERVICE_ID
,
storageData
.
getServiceId
());
map
.
put
(
LANGUAGE
,
storageData
.
getLanguage
());
map
.
put
(
IS_ADDRESS
,
storageData
.
getIsAddress
());
map
.
put
(
ADDRESS_ID
,
storageData
.
getAddressId
());
map
.
put
(
PROCESS_NO
,
storageData
.
getProcessNo
());
...
...
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/Column.java
浏览文件 @
e83e175a
...
...
@@ -34,6 +34,4 @@ public @interface Column {
Function
function
()
default
Function
.
None
;
boolean
matchQuery
()
default
false
;
boolean
termQuery
()
default
true
;
}
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageAnnotationListener.java
浏览文件 @
e83e175a
...
...
@@ -60,7 +60,7 @@ public class StorageAnnotationListener implements AnnotationListener, IModelGett
for
(
Field
field
:
fields
)
{
if
(
field
.
isAnnotationPresent
(
Column
.
class
))
{
Column
column
=
field
.
getAnnotation
(
Column
.
class
);
modelColumns
.
add
(
new
ModelColumn
(
new
ColumnName
(
column
.
columnName
(),
column
.
columnName
()),
field
.
getType
()));
modelColumns
.
add
(
new
ModelColumn
(
new
ColumnName
(
column
.
columnName
(),
column
.
columnName
()),
field
.
getType
()
,
column
.
matchQuery
()
));
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"The field named {} with the {} type"
,
column
.
columnName
(),
field
.
getType
());
}
...
...
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/Model.java
浏览文件 @
e83e175a
...
...
@@ -24,9 +24,10 @@ import lombok.Getter;
/**
* @author peng-yongsheng
*/
@Getter
public
class
Model
{
@Getter
private
final
String
name
;
@Getter
private
final
List
<
ModelColumn
>
columns
;
private
final
String
name
;
private
final
List
<
ModelColumn
>
columns
;
public
Model
(
String
name
,
List
<
ModelColumn
>
columns
)
{
this
.
name
=
name
;
...
...
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/ModelColumn.java
浏览文件 @
e83e175a
...
...
@@ -23,12 +23,15 @@ import lombok.Getter;
/**
* @author peng-yongsheng
*/
@Getter
public
class
ModelColumn
{
@Getter
private
final
ColumnName
columnName
;
@Getter
private
final
Class
<?>
type
;
private
final
ColumnName
columnName
;
private
final
Class
<?>
type
;
private
final
boolean
matchQuery
;
public
ModelColumn
(
ColumnName
columnName
,
Class
<?>
type
)
{
public
ModelColumn
(
ColumnName
columnName
,
Class
<?>
type
,
boolean
matchQuery
)
{
this
.
columnName
=
columnName
;
this
.
type
=
type
;
this
.
matchQuery
=
matchQuery
;
}
}
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/ModelInstaller.java
浏览文件 @
e83e175a
...
...
@@ -42,7 +42,7 @@ public abstract class ModelInstaller {
IModelGetter
modelGetter
=
moduleManager
.
find
(
CoreModule
.
NAME
).
getService
(
IModelGetter
.
class
);
List
<
Model
>
models
=
modelGetter
.
getModels
();
B
oolean
debug
=
System
.
getProperty
(
"debug"
)
!=
null
;
b
oolean
debug
=
System
.
getProperty
(
"debug"
)
!=
null
;
for
(
Model
model
:
models
)
{
if
(!
isExists
(
client
,
model
))
{
...
...
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
浏览文件 @
e83e175a
...
...
@@ -20,7 +20,7 @@ package org.apache.skywalking.oap.server.core.storage.query;
import
java.io.IOException
;
import
java.util.List
;
import
org.apache.skywalking.oap.server.core.query.entity.
Service
;
import
org.apache.skywalking.oap.server.core.query.entity.
*
;
import
org.apache.skywalking.oap.server.core.storage.DAO
;
/**
...
...
@@ -35,4 +35,15 @@ public interface IMetadataQueryDAO extends DAO {
int
numOfConjectural
(
final
long
startTimestamp
,
final
long
endTimestamp
,
final
int
srcLayer
)
throws
IOException
;
List
<
Service
>
getAllServices
(
final
long
startTimestamp
,
final
long
endTimestamp
)
throws
IOException
;
List
<
Service
>
searchServices
(
final
long
startTimestamp
,
final
long
endTimestamp
,
final
String
keyword
)
throws
IOException
;
Service
searchService
(
final
String
serviceCode
)
throws
IOException
;
List
<
Endpoint
>
searchEndpoint
(
final
String
keyword
,
final
String
serviceId
,
final
int
limit
)
throws
IOException
;
List
<
ServiceInstance
>
getServiceInstances
(
final
long
startTimestamp
,
final
long
endTimestamp
,
final
String
serviceId
)
throws
IOException
;
}
oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
浏览文件 @
e83e175a
...
...
@@ -58,28 +58,28 @@ public class MetadataQuery implements GraphQLQueryResolver {
return
getMetadataQueryService
().
getAllServices
(
startTimestamp
,
endTimestamp
);
}
public
List
<
Service
>
searchServices
(
final
Duration
duration
,
final
String
keyword
)
throws
ParseException
{
public
List
<
Service
>
searchServices
(
final
Duration
duration
,
final
String
keyword
)
throws
IOException
,
ParseException
{
long
startTimestamp
=
DurationUtils
.
INSTANCE
.
toTimestamp
(
duration
.
getStep
(),
duration
.
getStart
());
long
endTimestamp
=
DurationUtils
.
INSTANCE
.
toTimestamp
(
duration
.
getStep
(),
duration
.
getEnd
());
return
getMetadataQueryService
().
searchServices
(
startTimestamp
,
endTimestamp
,
keyword
);
}
public
Service
searchService
(
final
Duration
duration
,
final
String
serviceCode
)
throws
ParseException
{
long
startTimestamp
=
DurationUtils
.
INSTANCE
.
toTimestamp
(
duration
.
getStep
(),
duration
.
getStart
());
long
endTimestamp
=
DurationUtils
.
INSTANCE
.
toTimestamp
(
duration
.
getStep
(),
duration
.
getEnd
());
return
getMetadataQueryService
().
searchService
(
startTimestamp
,
endTimestamp
,
serviceCode
);
public
Service
searchService
(
final
String
serviceCode
)
throws
IOException
{
return
getMetadataQueryService
().
searchService
(
serviceCode
);
}
public
List
<
ServiceInstance
>
getServiceInstances
(
final
Duration
duration
,
final
String
id
)
throws
ParseException
{
public
List
<
ServiceInstance
>
getServiceInstances
(
final
Duration
duration
,
final
String
serviceId
)
throws
IOException
,
ParseException
{
long
startTimestamp
=
DurationUtils
.
INSTANCE
.
toTimestamp
(
duration
.
getStep
(),
duration
.
getStart
());
long
endTimestamp
=
DurationUtils
.
INSTANCE
.
toTimestamp
(
duration
.
getStep
(),
duration
.
getEnd
());
return
getMetadataQueryService
().
getServiceInstances
(
startTimestamp
,
endTimestamp
,
i
d
);
return
getMetadataQueryService
().
getServiceInstances
(
startTimestamp
,
endTimestamp
,
serviceI
d
);
}
public
List
<
Endpoint
>
searchEndpoint
(
final
String
keyword
,
final
String
serviceId
,
final
int
limit
)
{
public
List
<
Endpoint
>
searchEndpoint
(
final
String
keyword
,
final
String
serviceId
,
final
int
limit
)
throws
IOException
{
return
getMetadataQueryService
().
searchEndpoint
(
keyword
,
serviceId
,
limit
);
}
}
query-protocol
@
f2e54c2c
比较
9eafa5a6
...
f2e54c2c
Subproject commit
9eafa5a6c5b3b9a61002391485799ed89be96b9c
Subproject commit
f2e54c2cd3f7fdb2cdc975cf791e1bb1d9aab96e
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/MatchCNameBuilder.java
0 → 100644
浏览文件 @
e83e175a
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base
;
import
org.apache.skywalking.oap.server.core.Const
;
/**
* @author peng-yongsheng
*/
public
enum
MatchCNameBuilder
{
INSTANCE
;
public
String
build
(
String
termCName
)
{
return
termCName
+
Const
.
ID_SPLIT
+
"match"
;
}
}
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/StorageEsInstaller.java
浏览文件 @
e83e175a
...
...
@@ -56,7 +56,7 @@ public class StorageEsInstaller extends ModelInstaller {
}
}
@Override
protected
void
columnCheck
(
Client
client
,
Model
tableDefine
)
throws
StorageException
{
@Override
protected
void
columnCheck
(
Client
client
,
Model
tableDefine
)
{
}
...
...
@@ -104,7 +104,7 @@ public class StorageEsInstaller extends ModelInstaller {
.
put
(
"index.number_of_shards"
,
indexShardsNumber
)
.
put
(
"index.number_of_replicas"
,
indexReplicasNumber
)
.
put
(
"index.refresh_interval"
,
"3s"
)
.
put
(
"analysis.analyzer.
collector
_analyzer.type"
,
"stop"
)
.
put
(
"analysis.analyzer.
oap
_analyzer.type"
,
"stop"
)
.
build
();
}
...
...
@@ -117,10 +117,24 @@ public class StorageEsInstaller extends ModelInstaller {
.
startObject
(
"properties"
);
for
(
ModelColumn
columnDefine
:
tableDefine
.
getColumns
())
{
mappingBuilder
.
startObject
(
columnDefine
.
getColumnName
().
getName
())
.
field
(
"type"
,
mapping
.
transform
(
columnDefine
.
getType
()))
.
endObject
();
if
(
columnDefine
.
isMatchQuery
())
{
String
matchCName
=
MatchCNameBuilder
.
INSTANCE
.
build
(
columnDefine
.
getColumnName
().
getName
());
mappingBuilder
.
startObject
(
columnDefine
.
getColumnName
().
getName
())
.
field
(
"type"
,
mapping
.
transform
(
columnDefine
.
getType
()))
.
field
(
"copy_to"
,
matchCName
)
.
endObject
()
.
startObject
(
matchCName
)
.
field
(
"type"
,
"text"
)
.
field
(
"analyzer"
,
"oap_analyzer"
)
.
endObject
();
}
else
{
mappingBuilder
.
startObject
(
columnDefine
.
getColumnName
().
getName
())
.
field
(
"type"
,
mapping
.
transform
(
columnDefine
.
getType
()))
.
endObject
();
}
}
mappingBuilder
...
...
oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
浏览文件 @
e83e175a
...
...
@@ -20,13 +20,14 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query;
import
java.io.IOException
;
import
java.util.*
;
import
org.apache.skywalking.oap.server.core.query.entity.
Service
;
import
org.apache.skywalking.oap.server.core.query.entity.
*
;
import
org.apache.skywalking.oap.server.core.register.*
;
import
org.apache.skywalking.oap.server.core.source.DetectPoint
;
import
org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO
;
import
org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient
;
import
org.apache.skywalking.oap.server.library.util.BooleanUtils
;
import
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base.EsDAO
;
import
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base.*
;
import
org.elasticsearch.action.get.GetResponse
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.index.query.*
;
import
org.elasticsearch.search.SearchHit
;
...
...
@@ -45,20 +46,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
SearchSourceBuilder
sourceBuilder
=
SearchSourceBuilder
.
searchSource
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
boolQuery1
=
QueryBuilders
.
boolQuery
();
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceInventory
.
HEARTBEAT_TIME
).
gte
(
endTimestamp
));
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceInventory
.
REGISTER_TIME
).
lte
(
endTimestamp
));
BoolQueryBuilder
boolQuery2
=
QueryBuilders
.
boolQuery
();
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceInventory
.
REGISTER_TIME
).
lte
(
endTimestamp
));
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceInventory
.
HEARTBEAT_TIME
).
gte
(
startTimestamp
));
BoolQueryBuilder
timeBoolQuery
=
QueryBuilders
.
boolQuery
();
timeBoolQuery
.
should
().
add
(
boolQuery1
);
timeBoolQuery
.
should
().
add
(
boolQuery2
);
boolQueryBuilder
.
must
().
add
(
timeBoolQuery
);
boolQueryBuilder
.
must
().
add
(
timeRangeQueryBuild
(
startTimestamp
,
endTimestamp
));
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
ServiceInventory
.
IS_ADDRESS
,
BooleanUtils
.
FALSE
));
...
...
@@ -73,20 +61,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
SearchSourceBuilder
sourceBuilder
=
SearchSourceBuilder
.
searchSource
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
boolQuery1
=
QueryBuilders
.
boolQuery
();
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
EndpointInventory
.
HEARTBEAT_TIME
).
gte
(
endTimestamp
));
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
EndpointInventory
.
REGISTER_TIME
).
lte
(
endTimestamp
));
BoolQueryBuilder
boolQuery2
=
QueryBuilders
.
boolQuery
();
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
EndpointInventory
.
REGISTER_TIME
).
lte
(
endTimestamp
));
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
EndpointInventory
.
HEARTBEAT_TIME
).
gte
(
startTimestamp
));
BoolQueryBuilder
timeBoolQuery
=
QueryBuilders
.
boolQuery
();
timeBoolQuery
.
should
().
add
(
boolQuery1
);
timeBoolQuery
.
should
().
add
(
boolQuery2
);
boolQueryBuilder
.
must
().
add
(
timeBoolQuery
);
boolQueryBuilder
.
must
().
add
(
timeRangeQueryBuild
(
startTimestamp
,
endTimestamp
));
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
EndpointInventory
.
DETECT_POINT
,
DetectPoint
.
SERVER
.
ordinal
()));
...
...
@@ -101,20 +76,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
SearchSourceBuilder
sourceBuilder
=
SearchSourceBuilder
.
searchSource
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
boolQuery1
=
QueryBuilders
.
boolQuery
();
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
NetworkAddressInventory
.
HEARTBEAT_TIME
).
gte
(
endTimestamp
));
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
NetworkAddressInventory
.
REGISTER_TIME
).
lte
(
endTimestamp
));
BoolQueryBuilder
boolQuery2
=
QueryBuilders
.
boolQuery
();
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
NetworkAddressInventory
.
REGISTER_TIME
).
lte
(
endTimestamp
));
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
NetworkAddressInventory
.
HEARTBEAT_TIME
).
gte
(
startTimestamp
));
BoolQueryBuilder
timeBoolQuery
=
QueryBuilders
.
boolQuery
();
timeBoolQuery
.
should
().
add
(
boolQuery1
);
timeBoolQuery
.
should
().
add
(
boolQuery2
);
boolQueryBuilder
.
must
().
add
(
timeBoolQuery
);
boolQueryBuilder
.
must
().
add
(
timeRangeQueryBuild
(
startTimestamp
,
endTimestamp
));
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
NetworkAddressInventory
.
SRC_LAYER
,
srcLayer
));
...
...
@@ -131,28 +93,106 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
SearchSourceBuilder
sourceBuilder
=
SearchSourceBuilder
.
searchSource
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
boolQueryBuilder
.
must
().
add
(
timeRangeQueryBuild
(
startTimestamp
,
endTimestamp
));
BoolQueryBuilder
boolQuery1
=
QueryBuilders
.
boolQuery
();
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceInventory
.
HEARTBEAT_TIME
).
gte
(
endTimestamp
));
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceInventory
.
REGISTER_TIME
).
lte
(
endTimestamp
));
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
ServiceInventory
.
IS_ADDRESS
,
BooleanUtils
.
FALSE
));
BoolQueryBuilder
boolQuery2
=
QueryBuilders
.
boolQuery
();
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceInventory
.
REGISTER_TIME
).
lte
(
endTimestamp
));
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceInventory
.
HEARTBEAT_TIME
).
gte
(
startTimestamp
));
sourceBuilder
.
query
(
boolQueryBuilder
);
sourceBuilder
.
size
(
100
);
BoolQueryBuilder
timeBoolQuery
=
QueryBuilders
.
boolQuery
();
timeBoolQuery
.
should
().
add
(
boolQuery1
);
timeBoolQuery
.
should
().
add
(
boolQuery2
);
SearchResponse
response
=
getClient
().
search
(
ServiceInventory
.
MODEL_NAME
,
sourceBuilder
);
boolQueryBuilder
.
must
().
add
(
timeBoolQuery
);
return
buildServices
(
response
);
}
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
ServiceInventory
.
IS_ADDRESS
,
BooleanUtils
.
FALSE
));
@Override
public
List
<
Service
>
searchServices
(
long
startTimestamp
,
long
endTimestamp
,
String
keyword
)
throws
IOException
{
SearchSourceBuilder
sourceBuilder
=
SearchSourceBuilder
.
searchSource
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
boolQueryBuilder
.
must
().
add
(
timeRangeQueryBuild
(
startTimestamp
,
endTimestamp
));
String
matchCName
=
MatchCNameBuilder
.
INSTANCE
.
build
(
ServiceInventory
.
NAME
);
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
matchQuery
(
matchCName
,
keyword
));
sourceBuilder
.
query
(
boolQueryBuilder
);
sourceBuilder
.
size
(
100
);
SearchResponse
response
=
getClient
().
search
(
ServiceInventory
.
MODEL_NAME
,
sourceBuilder
);
return
buildServices
(
response
);
}
@Override
public
Service
searchService
(
String
serviceCode
)
throws
IOException
{
GetResponse
response
=
getClient
().
get
(
ServiceInventory
.
MODEL_NAME
,
ServiceInventory
.
buildId
(
serviceCode
));
if
(
response
.
isExists
())
{
Service
service
=
new
Service
();
service
.
setId
(
String
.
valueOf
(
response
.
getSource
().
get
(
ServiceInventory
.
SEQUENCE
)));
service
.
setName
((
String
)
response
.
getSource
().
get
(
ServiceInventory
.
NAME
));
return
service
;
}
else
{
return
null
;
}
}
@Override
public
List
<
Endpoint
>
searchEndpoint
(
String
keyword
,
String
serviceId
,
int
limit
)
throws
IOException
{
SearchSourceBuilder
sourceBuilder
=
SearchSourceBuilder
.
searchSource
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
EndpointInventory
.
SERVICE_ID
,
serviceId
));
String
matchCName
=
MatchCNameBuilder
.
INSTANCE
.
build
(
EndpointInventory
.
NAME
);
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
matchQuery
(
matchCName
,
keyword
));
sourceBuilder
.
query
(
boolQueryBuilder
);
sourceBuilder
.
size
(
limit
);
SearchResponse
response
=
getClient
().
search
(
EndpointInventory
.
MODEL_NAME
,
sourceBuilder
);
List
<
Endpoint
>
endpoints
=
new
ArrayList
<>();
for
(
SearchHit
searchHit
:
response
.
getHits
())
{
Map
<
String
,
Object
>
sourceAsMap
=
searchHit
.
getSourceAsMap
();
Endpoint
endpoint
=
new
Endpoint
();
endpoint
.
setId
(
String
.
valueOf
(
sourceAsMap
.
get
(
EndpointInventory
.
SEQUENCE
)));
endpoint
.
setName
((
String
)
sourceAsMap
.
get
(
EndpointInventory
.
NAME
));
endpoints
.
add
(
endpoint
);
}
return
endpoints
;
}
@Override
public
List
<
ServiceInstance
>
getServiceInstances
(
long
startTimestamp
,
long
endTimestamp
,
String
serviceId
)
throws
IOException
{
SearchSourceBuilder
sourceBuilder
=
SearchSourceBuilder
.
searchSource
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
boolQueryBuilder
.
must
().
add
(
timeRangeQueryBuild
(
startTimestamp
,
endTimestamp
));
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
ServiceInstanceInventory
.
SERVICE_ID
,
serviceId
));
sourceBuilder
.
query
(
boolQueryBuilder
);
sourceBuilder
.
size
(
100
);
SearchResponse
response
=
getClient
().
search
(
ServiceInstanceInventory
.
MODEL_NAME
,
sourceBuilder
);
List
<
ServiceInstance
>
serviceInstances
=
new
ArrayList
<>();
for
(
SearchHit
searchHit
:
response
.
getHits
())
{
Map
<
String
,
Object
>
sourceAsMap
=
searchHit
.
getSourceAsMap
();
ServiceInstance
serviceInstance
=
new
ServiceInstance
();
serviceInstance
.
setId
(
String
.
valueOf
(
sourceAsMap
.
get
(
ServiceInstanceInventory
.
SEQUENCE
)));
serviceInstance
.
setName
((
String
)
sourceAsMap
.
get
(
ServiceInstanceInventory
.
NAME
));
int
languageId
=
((
Number
)
sourceAsMap
.
get
(
ServiceInstanceInventory
.
LANGUAGE
)).
intValue
();
serviceInstance
.
setLanguage
(
LanguageTrans
.
INSTANCE
.
value
(
languageId
));
serviceInstances
.
add
(
serviceInstance
);
}
return
serviceInstances
;
}
private
List
<
Service
>
buildServices
(
SearchResponse
response
)
{
List
<
Service
>
services
=
new
ArrayList
<>();
for
(
SearchHit
searchHit
:
response
.
getHits
())
{
Map
<
String
,
Object
>
sourceAsMap
=
searchHit
.
getSourceAsMap
();
...
...
@@ -165,4 +205,20 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
return
services
;
}
private
BoolQueryBuilder
timeRangeQueryBuild
(
long
startTimestamp
,
long
endTimestamp
)
{
BoolQueryBuilder
boolQuery1
=
QueryBuilders
.
boolQuery
();
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
RegisterSource
.
HEARTBEAT_TIME
).
gte
(
endTimestamp
));
boolQuery1
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
RegisterSource
.
REGISTER_TIME
).
lte
(
endTimestamp
));
BoolQueryBuilder
boolQuery2
=
QueryBuilders
.
boolQuery
();
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
RegisterSource
.
REGISTER_TIME
).
lte
(
endTimestamp
));
boolQuery2
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
RegisterSource
.
HEARTBEAT_TIME
).
gte
(
startTimestamp
));
BoolQueryBuilder
timeBoolQuery
=
QueryBuilders
.
boolQuery
();
timeBoolQuery
.
should
().
add
(
boolQuery1
);
timeBoolQuery
.
should
().
add
(
boolQuery2
);
return
timeBoolQuery
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录