2015-03-31 47 views
2

我試圖從彈性搜索索引進行搜索,使用通配符過濾器,它正常工作,直到我在我的搜索條件中使用「空格」。Elastic通配符搜索不適用於空間

例如:如果在彈性指標值是「這是測試值」

當我使用搜索值:「這個*」 - >工作,獲取的價值 當我使用搜索值:「這是*「 - >不工作,導致零匹配

我的代碼如下

QueryBuilders。 wildcardQuery
ElasticSearchUtil.FIELDNAME,searchValue.toLowerCase())

我怎麼能處理的空間,讓我的搜索成功?

問候 UI

回答

3

通配符查詢只能與一個標記的工作方式。你要做的是找到一個令牌,後面跟另一個令牌,第二個令牌由前綴指定。這可以通過使用match phrase prefix查詢來實現。您的查詢應該是這樣的:

QueryBuilders.matchPhrasePrefixQuery(ElasticSearchUtil.FIELDNAME,searchValue)

請注意:searchValue不應該有 「*」 結尾。

+0

非常感謝你,它工作 – user3704685 2015-04-01 16:25:53