regex - Elasticsearch模式正则表达式以

标签 regex elasticsearch

我想问一下是否存在一些文档,这些文档描述了如何使用 Elasticseach模式正则表达式

我需要编写模式捕获 token 筛选器,该筛选器仅筛选以特定单词开头的代币。例如,输入 token 流应类似于(“abcefgh”,“abc123”,“aabbcc”,“abc”,“abdef”),而我的 token 生成器将仅返回代币 abcefgh abc123 abc ,因为这些 token 以“ abc ”开头。

有人可以帮我实现这个用例吗?

谢谢。

最佳答案

我建议是这样的:

"analysis": {
  "analyzer": {
    "my_trim_keyword_analyzer": {
      "type": "custom",
      "tokenizer": "keyword",
      "filter": [
        "lowercase",
        "trim",
        "generate_tokens",
        "eliminate_tokens",
        "remove_empty"
      ]
    }
  },
  "filter": {
    "eliminate_tokens": {
      "pattern": "^(?!abc)\\w+$",
      "type": "pattern_replace",
      "replacement": ""
    },
    "generate_tokens": {
      "type": "pattern_capture",
      "preserve_original": 1,
      "patterns": [
        "(([a-z]+)(\\d*))"
      ]
    },
    "remove_empty": {
      "type": "stop",
      "stopwords": [""]
    }
  }
}

如果 token 是pattern_capture过滤器的结果,则需要在此过滤器之后添加一个在我的示例中称为eliminate_tokens的过滤器,该过滤器基本上与不以abc开头的 token 匹配。那些不匹配的将替换为空字符串("replacement": "")。

此后,为了删除空 token ,我添加了remove_empty过滤器,该过滤器基本上是stop过滤器,其中停用词是""(空字符串)。

关于regex - Elasticsearch模式正则表达式以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022149/

相关文章:

JavaScript 正则表达式 : Inject specific number at specific position in a string

javascript - 正则表达式:单词必须以给定字符之一结尾

ruby-on-rails - 允许使用字母、破折号 (-) 和点 (.) 的正则表达式

java - 如何摆脱字符串中的数字?

rest - 如何在Rest API中使用Kibana查询

python - 我如何仅通过所有索引的id从elasticsearch获取文档

elasticsearch - 如何在 hibernate 搜索中编写 aggs 查询

elasticsearch - ElasticSearch日期范围查询不适用于自定义日期格式

ruby - 使用ElasticSearch ruby​​ gem按名称获取索引

c# - 替换引号之间的任何字符串