未分析的分析字段查询

vin*_*hkr 4 elasticsearch

我有一些文件以ex分析形式存储品牌名称:{"name":"Samsung"} {"name":"Motion Systems"}.在某些情况下,我希望以"s"开头的术语搜索,这将导致两个文档.另一种情况,我只想要以"s"查询开头的完整字段,这导致只返回"samsung".我已经分析了名称字段并将其存储起来.有什么办法可以在弹性搜索中以查询开始完成整个字段吗?

jav*_*nna 6

您应该使用multi_field以两种不同的方式索引字段.如果您按照已经标记的方式对其进行标记,则根据标记生成器生成的标记进行匹配.对于您想要的第二个匹配tye,您需要禁用分析字段并按原样索引,或使用产生相同结果的Keywork标记生成器.您的映射将如下所示:

{
    "your_type" : {
        "properties" : {
            "brand" : {
                "type" : "multi_field",
                "fields" : {
                    "brand" : {"type" : "string", "index" : "analyzed"},
                    "untouched" : {"type" : "string", "index" : "not_analyzed"}
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以搜索这两个字段.当你搜索brand你得到你已经拥有的比赛,搜索时brand.untouched你会得到第二个匹配.有多种方法可以将多个查询组合在一起,您可以查看bool查询中的实例.