我的数据看起来像这样:
CK/YZfB6XUmSOSM3IJqM2Q; Response code: 404. Elapsed: 0ms. Request: GET /marketing
4kk/TiKjYU2JY0L2N14QLg; Response code: 200. Elapsed: 10ms. Request: GET /api/monitor
vhXVsw4sBk69qv7dGE8JYw; Response code: 404. Elapsed: 0ms. Request: GET /graph-statistics
4kk/TiKjYW2JY0L2N14QLg; Response code: 200. Elapsed: 10ms. Request: GET /api/monitor
我正在尝试查询/过滤它,所以我只保留4xx响应。
我已经阅读了有关wildcards的文档,因此我希望至少有以下一个查询能够正常运行(这与Kibana中所写的一样):
message: "Response code: 4??"
message: 4??.
message: "Response code: 4*"
以下是JSON中的这些内容,以防万一转移(我为了简洁起见,我在同一个JSON中枚举了所有3个查询):
"filter" : [],
"query" : {
"query_string" : {
"query" : "message: \"Response code: 4??\"",
"query" : "message: 4??.",
"query" : "message: \"Response code: 4*\"",
"analyze_wildcard" : true
}
},
到目前为止,我没有运气,而且我的想法已经不多了......
答案 0 :(得分:1)
根据您的问题,该文字似乎已在消息字段中编入索引。 如果您希望查询仅返回4XX响应,请尝试以下查询。
message: (Response AND code AND 4??)
此查询实质上是要求lucene获取其中包含响应,代码和 4xx 字样的记录。 我针对以下情况进行了测试,其中您的记录可能包含400作为经过时间的一部分。
.........响应代码:200经过:404ms .......
但是查询工作正常,并且没有返回这些结果,因为404的后缀为 ms 。因此,这与您对 4 ?? 的搜索不匹配。
此外,您可能必须检查字段在集合中的索引方式。它是以文本还是字符串形式存储的? 在您的代码示例中,您尚未转义:,这是lucene中的特殊字符。
注意:此查询会检查文本中是否存在这些关键字,但也不一定按给定顺序检查