我正在搜索包含数组字段payload.params
我想显示所有只包含一个单词的字段
示例:
payload.params = [3raabb, two words!! , one_word]
payload.params = [1111, hello world , 2222]
显示:3raabb, one_word, 1111, 2222
尝试:
{
"query": {
"regexp": {
"payload.params": "[A-Za-z0-9_]*"
}
}
}
我该怎么做?
答案 0 :(得分:1)
要在查询中使用正则表达式,请使用Regexp query
。请注意,ElasticSearch正则表达式的风格是 Lucene ,它是一种非常具体的正则表达式。
在Lucene regular expressions中,^
和$
不是保留字符,它们被视为常规文字字符。此外,大多数类似Perl的速记字符类也不受支持。由于\w
基本上类似于[A-Za-z0-9_]
,因此您可以使用此替换代码中的\w
:
{
"query": {
"regexp": {
"payload.params": "[A-Za-z0-9_]+(, [A-Za-z0-9_]+)*"
}
}
}