elasticsearch - ElasticSearch - 列表元素中的模糊搜索
问题描述
我有一些文档存储在 ElasticSearch 中,如下所示:
{
"tag" : ["tag1", "tag2", "tag3"]
...
}
我想搜索“标签”字段。我知道它应该与如下查询一起使用:
{
"query":
{
"match" : {"tag" : "tag1"}
}
}
但是,我不想使用匹配,我想通过列表使用模糊搜索,例如:
{
"query":
{
"fuzzy" : {"tag" : "tagg1"}
}
}
问题是,上面的查询没有返回任何内容。我应该改用什么?
解决方案
您的弹性搜索映射中的标签字段类型是什么?
我已经尝试使用以下类型的标签字段和 elastisearch 版本是 7.2
"tag" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
对我来说工作得很好。
使用弹性模糊查询将是:
{
"query":
{
"fuzzy": {"tag" : "tagg1"}
}
}