1
我试图使用elasticsearch检索一些公司结果。我想,与“A”开头的公司,然后“B”等,如果我只是做一个非常典型的查询与“前缀”像这样正则表达式和弹性搜索
GET apple/company/_search
{
"query": {
"prefix": {
"name": "a"
}
},
"fields": [
"id",
"name",
"websiteUrl"
],
"size": 100
}
但是,这将返回Acme公司以及狐猴和同事们,所以我需要在整个名字的开始时区分A,而在词的开始时区分A。
看起来像正则表达式会在这里拯救,但弹性搜索只是忽略了我尝试的任何东西。在其他应用程序的测试中,^[\S]a*
应该为您提供任何以A
开头并且前面没有空格的内容。弹性搜索返回0结果有以下:
GET apple/company/_search
{
"query": {
"regexp": {
"name": "^[\S]a*"
}
},
"fields": [
"id",
"name",
"websiteUrl"
],
"size": 100
}
其实Sense界面的Elasticsearch会立即提醒您一个“错误的字符串语法错误”。这是因为即使在查询中,弹性搜索也需要一些字符转义。尽管如此,^[\\S]a*
也不起作用。
尝试'\ b'字边界而不是'[\ S]'。 –