regex - 如何在Elasticsearch中使用正则表达式搜索 “\…\”

标签 regex elasticsearch

在索引数据中,我有一些文档具有这样的值-

“排除y:\ dkj .... \ sdfisd \ sdfsdf \ asdfai”

我的要求是根据“\ .... \”搜索所有具有此类条目的文档。所以为此,我使用“regexp”。
目前,我为此使用了以下正则表达式,但对我而言却没有奏效-

  • “。* \\(\。\。\。\。)\\。*”
  • “。*?[\。] {4}。*”
  • “。* \\ [\。] {4} \\。*”

  • 以下是我向Elasticsearch提出的查询部分。
            "bool" : {
              "must" : [ {
                "query_string" : {
                  "query" : "\"DC2\"",
                  "default_field" : "COLLECTOR_NAME"
                }
              }, {
                "regexp" : {
                  "RAW_EVENT_DATA" : {
                    "value" : ".*?[\\.]{4}.*", 
                    "flags_value" : 0
                  }
                }
              } ]
            }
    

    请提供一些建议。

    最佳答案

    通常与分析仪有关
    让我们使用以下映射创建类型

    {
      "my_index": {
        "mappings": {
          "test": {
            "properties": {
              "title": {
                "type": "string"
              },
              "title_raw": {
                "type": "string",
                "index": "not_analyzed"
              }
           }
          }
        }
      }
    }
    

    新增文件
    POST my_index/test/1
    {
      "title":"exclude y:\\dkj....\\sdfisd\\sdfsdf\\asdfai",
      "title_raw":"exclude y:\\dkj....\\sdfisd\\sdfsdf\\asdfai"
    }
    

    现在搜寻
    POST my_index/test/_search
    {
      "query": {
        "regexp" : {
                  "title" : {
                    "value" : ".*?[\\.]{4}.*", 
                    "flags_value" : 0
                  }
      }
    }
    

    返回空结果

    但没有经过分析的 Realm 可以与regexp完美配合
    POST my_index/test/_search
    {
      "query": {
        "regexp" : {
                  "title_raw" : {
                    "value" : ".*?[\\.]{4}.*", 
                    "flags_value" : 0
                  }
      }
    }
    

    您可以检查documentation以了解其发生原因。由于您使用的是标准分析仪,部分信息会在索引编制阶段丢失,并且在搜索过程中不可用。

    关于regex - 如何在Elasticsearch中使用正则表达式搜索 “\…\”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38724017/

    相关文章:

    javascript:从复杂的id字符串中提取数组索引

    elasticsearch - 为什么不记录查询?

    elasticsearch - 如何让ES不得分应该引起

    elasticsearch - 隐藏用户的查询

    linux - 如何使用Shell脚本将日志文件转换为JSON格式?

    java - 我需要升级我的一个正则表达式

    c# - 提取文本文件中特定标签之间的内容 - C#

    python - 如何在 python3 中将复杂的正则表达式编写为字符串?

    regex - 在egrep中匹配As后跟相同数量的B

    elasticsearch - 我可以使用Logstash提取压缩数据吗?