当前位置: 首页 > 面试题库 >

Elasticsearch如何在通配符中使用multi_match

濮阳功
2023-03-14
问题内容

我有一个具有属性名称和姓氏的用户对象。我想使用一个查询来搜索这些字段,并且multi_match在文档中找到了该字段,但是我不知道如何将其与通配符一起正确使用。可能吗?

我尝试了multi_match查询,但没有成功:

{
    "query": {
        "multi_match": {
            "query": "*mar*",
            "fields": [
                "user.name",
                "user.surname"
            ]
        }
    }
}

问题答案:

或者,您可以query_string对通配符使用查询。

"query": {
    "query_string": {
        "query": "*mar*",
        "fields": ["user.name", "user.surname"]
    }
}

这将比在索引时使用nGram过滤器慢(请参阅我的其他答案),但是如果您正在寻找一种快速且肮脏的解决方案…

我也不确定您的映射,但是如果您使用user.name而不是name映射,则需要如下所示:

"your_type_name_here": {
    "properties": {
        "user": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "surname": {
                    "type": "string"
                }
            }
        }
    }
}


 类似资料:
  • 该字段中的映射是: 所以,我想我误解了通配符在ES中是如何工作的。有人知道为什么不匹配文本字段中的“任何字符”吗? 谢了。 > 创建索引

  • 问题内容: 我已经使用此批量请求设法用4个文档填充了索引: 开机自检 现在如何在所有可用 标题* 上使用 通配符 进行 搜索 ? *** 类似于 但提供一个或多个通配符的东西。例如,搜索“ ”并解析来自elasticsearch的响应以最终返回如下内容: 谢谢! 问题答案: Elasticsearch在常规匹配查询中提供正则表达式支持 给你这个 要更新到您的问题URI搜索,我不确定是否可行,如果使

  • 问题内容: 我很难用Elasticsearch构建查询。 我想查询类似的东西: 所以我试图构造的是这样的: 但这似乎返回一个错误。 谁能给我一个指针,我应该如何看待用Elasticsearch进行这种OR查询? 我当前的数据已发送: 和我的查询: 返回此错误: 问题答案: 这是由于JSON格式错误所致。此查询的正确JSON格式如下-

  • 问题内容: 如何在路线中指定通配符- 因此,以上内容适用于/ admin / users和/ admin / users / 1或/ admin / org / 3。因此,管理后可能会有一两个级别的路径。我该怎么做 ? 问题答案: 当前,AngularJS不支持路由中的正则表达式。 您可以按照以下方法解决 http://plnkr.co/edit/tBumW2oEqki2sEl1hjSc?p=pr

  • 我在努力实现这个目标: 通过bool查询筛选出结果,如“status=1” 通过布尔范围查询筛选出结果,如“discance:gte 10和lte 60” 通过从int数组中匹配至少一个int值筛选出结果 在多个字段中搜索单词,并计算文档得分。有些字段需要通配符,有些字段需要增强,如ImportantField^2、SomeField*、SomeOtherField^0.75 以上所有点都由AND

  • 问题内容: 我目前正在使用Tire Client进行elasticsearch。可以说我有一个字段,该字段在我的elasticsearch映射中被索引为很长的类型的字段。我正在尝试实现以下目标: “ id”是我一直在谈论的领域。但是由于我在查询中指定了字段,所以通配符不起作用,最终我得到了唯一匹配的结果。 但是对_all搜索也可以执行相同的操作,因为字段类型无关紧要。我希望此通配符搜索有效,同时还