我在elcsearch中有很多字段名称, 例如:
web_logfield_A,web_logfield_B,web_logfield_C :: abc,
apach_logfield_A,apach_logfield_A
如果我想获得这些字段的价值( web_logfield_A,web_logfield_B,web_logfield_C :: abc)
我可以使用Regex表达式对“字段名称”进行查询,如
/web_logfield[A-Za-a_]+/
我尝试使用.setQuery(QueryBuilders.termQuery(“”,“”), 但它看起来不能那样做? JAVA API中的哪个方法可以做到这一点?
答案 0 :(得分:0)
根据具体格式,您可以使用:
web_logfield[^,]+
甚至
web_logfield_[^,]+
即:将web_logfield
之后的所有内容添加到逗号。
查看实际操作:https://regex101.com/r/dT4nJ2/1
要处理结果,您可以create an array of the regex matches。
答案 1 :(得分:0)
在正则表达式中,“+”表示有一个字符要匹配,所以你的正则表达式不能匹配“web_logfield_C :: abc”,我想你可以使用“web_logfield_ [A-Za-Z] + *”,其中可以在“+”之前匹配一个或多个字符
答案 2 :(得分:0)
使用模式编写正则表达式,并使用匹配器匹配字符串。
Pattern p = Pattern.compile("web_logfield[A-Za-a_]+");
Matcher m = p.matcher(str);
while(m.find()){
String res = m.group();
System.out.println(res);
}
答案 3 :(得分:0)
您应该尝试query_string
这样的查询
.setQuery(QueryBuilders.queryStringQuery("xyz").field("web_logfield_*"))
其中xyz
是您要在这些字段中匹配的内容