@SpringBootTest
class DemoApplicationTests {
@Resource
@Qualifier("bbossESStarterDefault")
private BBossESStarter bbossESStarterDefault;
@Resource
@Qualifier("bbossESStarterEs680")
private BBossESStarter bbossESStarterEs680;
@Test
void contextLoads() {
/**
* @time: 2022/6/1 11:08
* @Param: 非spring boot环境 和 spring boot环境
* @Param: Elasticsearch 6.3及以上版本新增的SQL功能
* @Description: RestClientUtil example
*/
// 1. 默认:sql接口写法 6-5-× 5-x
/*ClientInterface es511Client = bbossESStarterEs680.getRestClient("elasticsearch 5.1.1");
SQLRestResponse es511Response = es511Client.executeHttp("/_xpack/sql",
"{\"query\": \" SELECT * FROM log-2022.03.01 where @timestamp between 1646099070047 and 1646099070063 \"}",
ClientInterface.HTTP_POST,
new SQLRestResponseHandler());
System.out.println(es511Response);
ClientInterface es680Client = bbossESStarterEs680.getRestClient("elasticsearch 6.8.0");
SQLRestResponse es680Response = es680Client.executeHttp("/_xpack/sql",
"{\"query\": \" SELECT * FROM alert where generate_time between 1651852800000 and 1651939199000 \"}",
ClientInterface.HTTP_POST,
new SQLRestResponseHandler());
System.out.println(es680Response);
// 2. 默认:sql函数写法 6-5-× 5-x
ClientInterface es511Client = bbossESStarterEs680.getRestClient("elasticsearch 5.1.1");
List<Map> es511result = es511Client.sql(Map.class, "{\"query\":\"SELECT * FROM log-2022.03.01 where @timestamp between 1646099070047 and 1646099070063 \"}");
System.out.println("默认sql函数写法----511---> " + es511result.size());
ClientInterface es680Client = bbossESStarterEs680.getRestClient("elasticsearch 6.8.0");
List<Map> es680result = es680Client.sql(Map.class, "{\"query\":\"SELECT * FROM alert where generate_time between 1651852800000 and 1651939199000 \"}");
System.out.println("默认sql函数写法----680---> " + es680result.size());
// 3. SQL插件 sql函数写法 6-集群有问题待尝试 5-√ 5-x (No handler found for uri)
ClientInterface es680Client = bbossESStarterEs680.getRestClient("elasticsearch 6.8.0");
ESDatas<Map> es680Datas = es680Client.searchList("/_sql",
"SELECT * FROM alert limit 0,10",
Map.class);
//获取结果对象列表
List<Map> es680demos = es680Datas.getDatas();
System.out.println("SQL插件sql函数写法----680---> " + es680demos.size());
ClientInterface es511Client = bbossESStarterEs680.getRestClient("elasticsearch 5.1.1");
ESDatas<Map> es511Datas = es511Client.searchList("/_sql",
"SELECT * FROM log-2022.03.01 limit 0,10",
Map.class);
//获取结果对象列表
List<Map> es511demos = es511Datas.getDatas();
System.out.println("SQL插件sql函数写法----511---> " + es511demos.size());
// 4. SQL插件 sql转dsl写法 6-集群有问题待尝试 5-√ 5-×
ClientInterface es680Client = bbossESStarterEs680.getRestClient("elasticsearch 6.8.0");
String transformDsl680 = es680Client.executeHttp("/_sql/_explain",
"SELECT * FROM alert where generate_time between 1651852800000 and 1651939199000",
ClientInterface.HTTP_POST
);
ESDatas<Map> ES680Datas = es680Client.searchList("alert/_search", transformDsl680, Map.class);
System.out.println("sql转dsl写法----680---> " + ES680Datas.getDatas().size());
ClientInterface es511Client = bbossESStarterEs680.getRestClient("elasticsearch 5.1.1");
String transformDsl511 = es511Client.executeHttp("/_sql/_explain",
"SELECT * FROM log-2022.03.01 where @timestamp between 1646099070047 and 1646099070063",
ClientInterface.HTTP_POST
);
ESDatas<Map> ES511Datas = es511Client.searchList("webids-webattack_dolog-2022.03.01/_search", transformDsl511, Map.class);
System.out.println("sql转dsl写法----511---> " + ES511Datas.getDatas().size());
// 5. 默认:sql转dsl写法 6-5-× 5-x
ClientInterface es511Client = bbossESStarterEs680.getRestClient("elasticsearch 5.1.1");
String transformDsl511 = es511Client.executeHttp("/_xpack/sql/translate",
"{\"query\": \"SELECT * FROM log-2022.03.01 where @timestamp between 1646099070047 and 1646099070063 \",\"fetch_size\": 5}",
ClientInterface.HTTP_POST
);
System.out.println(transformDsl511);
ClientInterface es680Client = bbossESStarterEs680.getRestClient("elasticsearch 6.8.0");
String transformDsl680 = es680Client.executeHttp("/_xpack/sql/translate",
"{\"query\": \" SELECT * FROM alert where generate_time between 1651852800000 and 1651939199000 \",\"fetch_size\": 5}",
ClientInterface.HTTP_POST
);
System.out.println(transformDsl680);
// 6. dsl语句写法 6-5-√
ClientInterface es680Client = bbossESStarterEs680.getRestClient("elasticsearch 6.8.0");
String dsl680 = "{\"size\":10000,\"timeout\":\"600s\",\"query\":{\"range\":{\"generate_time\":{\"from\":1651852800000,\"to\":1651939199000,\"include_lower\":true,\"include_upper\":true,\"boost\":1.0}}},\"sort\":[{\"generate_time\":{\"order\":\"asc\"}}]}";
ESDatas<Map> ES680Datas = es680Client.searchList("alert/_search", dsl680, Map.class);
System.out.println("dsl680----37---> " + ES680Datas.getDatas().size());
ClientInterface es511Client = bbossESStarterEs680.getRestClient("elasticsearch 5.1.1");
String dsl511 = "{\"size\":10000,\"timeout\":\"600s\",\"query\":{\"range\":{\"@timestamp\":{\"from\":1646099070047,\"to\":1646099070063,\"include_lower\":true,\"include_upper\":true,\"boost\":1.0}}},\"sort\":[{\"@timestamp\":{\"order\":\"asc\"}}]}";
ESDatas<Map> ES511Datas = es511Client.searchList("log-2022.03.01/_search", dsl511, Map.class);
System.out.println("dsl511----28---> " + ES511Datas.getDatas().size());*/
/**
* @time: 2022/6/1 11:08
* @Param: 非spring boot环境 和 spring boot环境
* @Param: Elasticsearch 6.3及以上版本新增的SQL功能
* @Description: ConfigRestClientUtil example
*/
// 7. xml-dsl写法 6-5-√
/*ClientInterface client = bbossESStarterDefault.getConfigRestClient("esmapper/test.xml");
ESDatas<Map> es511Datas = client.searchList("log-2022.03.01/_search",
"511xmlDslQuery", Map.class);
System.out.println("xml-dsl写法----1---> " + es511Datas.getDatas().size());*/
ClientInterface client = bbossESStarterEs680.getConfigRestClient("esmapper/test.xml");
ESDatas<Map> es680Datas = client.searchList("alert/_search",
"680xmlDslQuery", Map.class);
System.out.println("xml-dsl写法----1---> " + es680Datas.getDatas().size());
}
}
xml文件示例
<properties>
<property name="511xmlDslQuery">
<![CDATA[
{
"from" : 0,
"size" : 10000,
"query" : {
"bool" : {
"filter" : [
{
"bool" : {
"must" : [
{
"range" : {
"@timestamp" : {
"from" : 1646099070047,
"to" : 1646099070063,
"include_lower" : true,
"include_upper" : true,
"boost" : 1.0
}
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"ext" : { }
}
]]>
</property>
<property name="680xmlDslQuery">
<![CDATA[
{
"from" : 0,
"size" : 10000,
"query" : {
"bool" : {
"filter" : [
{
"bool" : {
"must" : [
{
"range" : {
"generate_time" : {
"from" : 1651852800000,
"to" : 1651939199000,
"include_lower" : true,
"include_upper" : true,
"boost" : 1.0
}
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"ext" : { }
}
]]>
</property>
</properties>