首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex查询不适用于EleasticSearch,而在java中工作。

Regex查询不适用于EleasticSearch,而在java中工作。
EN

Stack Overflow用户
提问于 2022-10-28 06:06:06
回答 1查看 50关注 0票数 0

Regex在java中工作,但在ElasticSearch中不工作。

爪哇:

代码语言:javascript
运行
复制
Pattern pattern = Pattern.compile("(\\d{8}-[01],)*(((202210((2[89])|(3[01])))|(2022((1[12]))\\d{2})|(20((2[3-9])|([3-9][0-9]))\\d{4}))-[01])*([,]\\d{8}-[01])*");
Matcher matcher = pattern.matcher("20221027-0,20221028-1");
System.out.println(matcher.matches());

它打印true

但是当我使用EleasticSearch时,它没有工作。

折叠json是我想在EleasticSearch中查询的文档。

代码语言:javascript
运行
复制
{
    "_index": "eagle_clue_v1",
    "_type": "_doc",
    "_id": "51740",
    "_score": 0.0,
    "_source": {
        "id": 51740,
        "next_follow_time": "20221027-0,20221028-1"
    }
}

以下查询未工作

代码语言:javascript
运行
复制
POST /eagle_clue_v1/_search
{
    "from": 0,
    "size": 10,
    "query": {
        "bool": {
            "must": [
                {
                    "bool": {
                        "filter": [
                            {
                                "terms": {
                                    "id": [
                                        "51740"
                                    ]
                                }
                            },
                            {
                                "regexp": {
                                    "next_follow_time.keyword": {
                                        "value": "(\\d{8}-[01],)*(((202210((2[89])|(3[01])))|(2022((1[12]))\\d{2})|(20((2[3-9])|([3-9][0-9]))\\d{4}))-[01])([,]\\d{8}-[01])*"
                                    }
                                }
                            }
                        ]
                    }
                }
            ]
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-28 06:18:41

检查此页面的正则表达式语法。

  1. 使用0-9代替d。
代码语言:javascript
运行
复制
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "filter": [
              {
                "regexp": {
                  "next_follow_time.keyword": {
                     "value": """([0-9]{8}-[01],)*(((202210((2[89])|(3[01])))|(2022((1[12]))[0-9]{2})|(20((2[3-9])|([3-9][0-9]))[0-9]]{4}))-[01])([,][0-9]{8}-[01])*"""
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74231234

复制
相关文章

相似问题

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