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]'。 –