0

我在 elasticsearch 中有一个文档

  {"uuid":"eaa91372-d541-4b24-bdf4-3cb4902d2da1","artistName":"Amadeo Modigliani","Review":"abc","Origin":"pak","isNew":"false"}

match query在我的代码中使用它来获取文档,它在给出所需的搜索值时返回正确的结果,例如:"Amadeo Modigliani",或者"Amadeo""Modigliani" 但是当我"Amad"只通过 ES 时没有找到文档,请建议是否有任何其他查询可以执行搜索使用此扫描仪或有任何其他方式来执行此任务,谢谢

4

1 回答 1

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)

您可以在下面找到有关此概念的相应信息。

匹配查询
最小值应该匹配

于 2017-11-02T10:24:15.993 回答