首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确使用elasticsearch regex查询?

如何正确使用elasticsearch regex查询?
EN

Stack Overflow用户
提问于 2016-08-24 16:25:20
回答 1查看 406关注 0票数 0

我正在将Splunk查询翻译到Elasticsearch。我想检查日志中的URL是否包含如下内容:

代码语言:javascript
运行
复制
"script>" OR "UNION ALL SELECT"

我觉得很公平,去了文档,然后:

代码语言:javascript
运行
复制
{
  "regexp": {
    "http.url": "script>"
  }
}

Elasticsearch (2.3)答复:

"root_cause":[{“原因”:“未能解析搜索源。未知搜索元素regexp","type":"search_parse_exception","line":2,

有人能给我提一下这类问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 16:35:34

从文档开始时,这是一个非常简单的错误。在文档中,我们通常只显示原始查询(及其参数)。查询要么是复合查询,要么是叶查询。regexp是叶查询的一个示例。

但是,这还不足以实际发送查询。对于任何查询,您都缺少DSL的一个简单包装部分:

代码语言:javascript
运行
复制
{
  "query": {
    "regexp": {
      "http.url": "script>"
    }
  }
}

要使用复合查询,最好的方法是使用复合查询

它有mustmust_notshouldfilter,并且每个人都接受一个查询数组(或过滤器,这些查询只是没有记分的、可缓存的查询)。should是它的OR-like方面,但是当您在它旁边添加must时,一定要阅读关于它的行为方式的文档。要点是should本身就像一个OR (如下面所示),但是如果将它与must组合,那么它就成为完全可选的,而不用使用"minimum_should_match": 1

代码语言:javascript
运行
复制
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "http.url": "script>"
          }
        },
        {
          "term": {
            "http.url": "UNION ALL SELECT"
          }
        }
      ]
    }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39128535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档