You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ElasticSearch 1.7查询非http开头URL无结果,请求修正

修正Elasticsearch 1.7中查找非http开头URL的查询

首先,你的原始查询问题出在正则表达式语法和flags的使用上——Elasticsearch 1.7基于Lucene 4.10.4,它的正则规则不支持@&~(http.+)这种写法,而且ANYSTRING并不是有效的flags参数。

下面给你两种可行的修正方案,优先推荐第二种(性能更优):

方案一:使用正确的正则表达式(负向前瞻)

利用Lucene支持的负向前瞻语法,匹配所有不以http开头的字符串:

{
  "query": {
    "regexp": {
      "url": {
        "value": "^(?!http).*$",
        "flags": "DOTALL"
      }
    }
  }
}
  • ^(?!http):负向前瞻,确保字符串开头不是http
  • .*$:匹配后续任意字符
  • DOTALL:让.匹配包括换行符在内的所有字符(如果你的URL不含换行,也可以省略,但加上更稳妥)

方案二:使用Bool查询结合Prefix(性能更优)

Regexp查询的性能通常不如基于倒排索引的前缀查询,如果你只是要排除以http开头的URL,用bool+must_not+prefix的组合效率更高:

{
  "query": {
    "bool": {
      "must_not": [
        {
          "prefix": {
            "url": "http"
          }
        }
      ]
    }
  }
}

这个查询会返回所有不匹配url字段以http开头的文档,完全满足你的需求,而且执行速度更快。

内容的提问来源于stack exchange,提问作者Malvinka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:41:09