我們在elasticsearch中有一個域名索引(我們使用ruby連接和維護這個輪胎寶石),但是我們在精確搜索時遇到了麻煩。elasticsearch與破折號完全匹配
如果我在域中搜索術語google.com,它會帶回google.com,但它還會帶回任何帶有破折號( - )的域,例如in-google.com,research會讓我相信 - 是ES中的通配符,我需要做的就是不分析,但不起作用。
:domain => { :type => 'string' , :analyzer => 'whitespace' },
:domain_2 => { :type => 'string' , :analyzer => 'pattern' },
:domain_3 => { :type => 'string', :index => 'not_analyzed' },
:domain_4 => { :type => 'string', :analyzer => 'snowball' }
我已經嘗試了不同的分析儀,你可以在上面看到,但使用「頭」插件搜索時,他們都具有相同的問題。
https://gist.github.com/anonymous/8080839是我用來生成數據集來測試的代碼,我在尋找的是能夠搜索JUST谷歌,如果我想*谷歌我可以實現我自己的通配符?
我辭職的事實,我將不得不刪除並重新生成我的索引,但無論我選擇什麼樣的分析或類型,我仍然不能得到一個確切的匹配
亞歷您好,感謝回答,我有點不確定我理解你的榜樣,我設置瞭如你所建議的multi_field方法(謝謝),但我仍然有問題搜索確切的域,你給的兩個例子查詢仍然顯示in-google.com,即使搜索查詢只是谷歌。 –
對不起,我忘記了在輸出中丟失的註釋。如果你看這個劇本,應該對他們爲什麼被收錄進行評論。最後一個查詢只匹配in-google.com。我已經更新了答案,以包含更多澄清的評論。希望這有助於:) –
我開始瞭解這一點(和播放)多一點,https://www.found.no/play/gist/dd354aad8703837877cf這是我目前的工作正在進行中多一點的數據,作爲你可以看到我有精確的匹配運行良好,但現在是通配符搜索,如果我想搜索谷歌*,在谷歌中仍然會像megoogle一樣出現。 –