我在elasticsearch中有一份文件
{"uuid":"eaa91372-d541-4b24-bdf4-3cb4902d2da1","artistName":"Amadeo Modigliani","Review":"abc","Origin":"pak","isNew":"false"}
我在我的代码中使用match query
来获取文档,它会在提供所需的搜索值时返回正确的结果,例如:"Amadeo Modigliani"
,或"Amadeo"
或"Modigliani"
但是当我通过"Amad"
时,只有ES找不到该文件,请建议是否有任何其他查询将使用此scanerio执行搜索,或者是否有其他方法来执行此任务,谢谢
答案 0 :(得分:0)
您实际上是在描述Elastic Search的部分匹配功能。 部分匹配允许指定用户正在查找的单词的一部分。它找到包含此部分的任何单词。
在您的情况下,最低匹配可以解决您的问题。它是匹配查询功能(minimum_should_match
参数)附带的参数,可以根据您希望此功能的工作方式配置值。
以下是使用此参数的示例:
QueryBuilder qb = QueryBuilders
.boolQuery()
.must(termQuery("component", currentComponent))
.should(termQuery("userId", currentUserId))
.should(termQuery("customerId", currentCustomerId))
.should(termQuery("currentRole", ADMIN))
.minimumShouldMatch("2"); // or .minimumNumberShouldMatch(1)
您可以在下面找到有关此概念的相关信息。