string - 我正在使用 Java 通过在我的代码中动态生成查询来从弹性搜索中获取一些记录。查询需要一个字符串
问题描述
我有一个从 ES 获取一些记录的 JAVA 代码。JAVA代码如下:
public Map<String, Object> getRiskDetailsFromEventIds(final String eventId) {
try {
String elasticBaseUrl = elasticsearchConfig.getEsUrl();
String esIndexName = elasticsearchConfig.getHitsIndex();
String endpointUrl = elasticBaseUrl + "/" + esIndexName + "/_search";
String queryTemplate = IOUtils.toString(ESRepositary.class.getClassLoader().getResourceAsStream(
"querytemplates/hits_search_event_es_query_template.json"), Charset.defaultCharset());
String query = String.format(queryTemplate, eventId);
return getResultsFromElastic(endpointUrl, query);
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}
我的 hits_search_event_es_query_template.json 看起来像这样
{
"_source": [
"hitNumber","eventId","hitScore","severityLevel","priority","hitType.typeCode","targetOwner","hitType.search","recommendedAction","referralId"
],
"query": {
"bool": {
"must": [
{
"terms": {
"eventId": ["%s"]
}
}
]
}
},
"size" : "50"
}
现在,这需要一个字符串。我的 eventId 是:“A,B,C,D”
我需要传递给查询模板的字符串应该是:“A”,“B”,“C”,“D” 有人可以帮我以这种方式分解我的字符串,或者如果有人可以帮我将我的 ES 查询修改为利用我所拥有的。
解决方案
Getting a List of the eventIds, I am able to do the following :
String eventId = eventIds.stream().map(event -> "\""+event+"\"").collect(Collectors.joining(","));
where eventIds is the List
Also I have changed my query as below :
{
"_source": [
"hitNumber","eventId","hitScore","severityLevel","priority","hitType.typeCode","targetOwner","hitType.search","recommendedAction","referralId"
],
"query": {
"bool": {
"must": [
{
"terms": {
"eventId": [%s]
}
}
]
}
},
"size" : "50"
}
This gives me the required query which I need.
推荐阅读
- javascript - 禁用 create-react-app 的 SKIP_PREFLIGHT_CHECK 有缺点吗?
- django-rest-framework - 我们如何处理密码更改和忘记密码以及令牌刷新?
- jenkins - 如何触发另一个需要 $BRANCH 变量的 Jenkins 管道?
- aframe - 大家好,我正在尝试根据 URL 参数动态更改 a-text 值
- android - EditText Int number 验证 ID 号 0-1000
- vue.js - 如何呈现条件html
- android - FragmentContainerView 作为 NavHostFragment
- ios - 安装 Xcode10.2.1 但仍然收到错误“使用 Swift 5.0.1 编译的模块无法由 Swift 5.1 编译器导入”
- redis - 关于redis位图结构内存存储问题
- arrays - 使用 OPENJSON 函数的 SQL Server 中 JSON 数据的路径困难