有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java需要什么elasticsearch查询来搜索整个单词的一部分

我在elasticsearch中有一个文档

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

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


共 (1) 个答案

  1. # 1 楼答案

    您实际上是在描述弹性搜索的部分匹配功能部分匹配允许指定用户要查找的单词的一部分。它会查找包含此部分的所有单词

    在您的情况下,最小值应该匹配可以解决您的问题。它是匹配查询功能(参数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)
    

    你可以在下面找到关于这个概念的适当信息

    Match Query
    Minimum Should Match