我有一些文件以ex分析形式存储品牌名称:{"name":"Samsung"} {"name":"Motion Systems"}.在某些情况下,我希望以"s"开头的术语搜索,这将导致两个文档.另一种情况,我只想要以"s"查询开头的完整字段,这导致只返回"samsung".我已经分析了名称字段并将其存储起来.有什么办法可以在弹性搜索中以查询开始完成整个字段吗?
您应该使用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查询中的实例.
| 归档时间: |
|
| 查看次数: |
1681 次 |
| 最近记录: |