弹性搜索:创建由<space>或&#34; - &#34;分隔的标记。超过3个字符

时间:2017-04-13 06:41:52

标签: elasticsearch

在我的弹性搜索设置中,我想创建以&#34;分隔的标记。 &#34;或&#34; - &#34;超过3个字符。 我相信模式标记器可以工作,但我无法创建正则表达式。

请帮我正则表达

1 个答案:

答案 0 :(得分:1)

您应该可以在模式标记器模式字段中使用以下正则表达式:

([^\s-]{3,})

  • \ s 表示任何空格字符。

  • - 表示文字短划线字符。

  • 将两者放在 [^ ] 之间意味着匹配任何不属于列表中的字符(在这种情况下,任何<强>不是空白而不是破折号)

  • {3,} 表示上一场比赛必须发生3次或更多次。

  • 整个语句周围的括号表示你想要捕获内部的内容,模式标记生成器从正则表达式的匹配组中提取其标记。

你可以在这里玩这个正则表达式,看看它将如何拆分你的字符串:

https://regex101.com/r/2e9p34/1

在旁注中,可能还有其他更好的方法可以更好地处理您没有想到的边缘情况,但我决定按照您的要求完全回答您的问题。我强烈建议您探索ElasticSearch为其用例分析器提供的所有选项,以确定哪种选项最适合您的需求。

希望这有帮助!