我使用的是spring boot 2.3.9 Release,ES是7.6。如何在不修改索引映射的情況下在ES中搜索帶空格的Word。例如名稱:John Jose 我正在嘗試使用以下代碼,但無法正常作業。我讀了其他一些我們需要添加“非分析器”的帖子。我不需要修改索引映射。是否可以在查詢生成器本身中添加此檢查。
QueryBuilder testQuery = QueryBuilders.matchQuery("cname","John Jose");
索引映射
"cname": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
}
uj5u.com熱心網友回復:
它不起作用,因為您正在嘗試Match Query。默認情況下,匹配查詢集運算子為OR.
因此,對于您的代碼,它會在內部創建類似查詢John OR Jose并回傳結果。
如果您希望名稱中的兩個單詞都出現在任何位置,那么您可以嘗試設定默認運算子值AND,如下所示。這將創建查詢John AND Jose
QueryBuilder testQuery = QueryBuilders.matchQuery("cname","John Jose").operator(Operator.AND);
如果您想進行短語匹配(execat 匹配),那么您可以嘗試下面的查詢,該查詢將在內部執行查詢,例如"John Jose"(根據我的理解,您正在尋找此查詢)
QueryBuilder testQuery = QueryBuilders.matchPhraseQuery("cname","John Jose");
uj5u.com熱心網友回復:
text欄位被分析并默認standard使用分析器,因此在您的情況下,您John Jose將創建標記為john和jose(注意小寫),并且搜索時間也用于match查詢,它將使用相同的分析器進行標記化,因此如果您的索引檔案有內容喜歡John Jose,它會匹配..不需要從你身邊做任何事情。
您能否分享您的示例檔案并解釋您的意思是它不起作用?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444297.html
標籤:弹性搜索
