栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用elasticsearch在数组对象类型中进行精确搜索

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用elasticsearch在数组对象类型中进行精确搜索

如果您有一组离散的已知类别,则可以使用布尔查询:

"bool" : {    "must" : {        "terms" : { "categories" : ["c", "d"],  minimum_should_match : 2         }    },    "must_not" : {        "terms" : { "categories" : ["a", "b", "e"],  minimum_should_match : 1         }    }}

否则,我认为,可能最简单的方法是存储另一个用作category关键字的字段。

{"id": 1, "categories" : ["c", "d"], "categorieskey" : "cd"}

这样的事情。然后,您可以轻松地通过术语查询查询所需的精确结果,例如:

term { "categorieskey" : "cd" }

而且,您仍然可以非排他性地搜索,例如:

term { "categories" : "c" }

查询必须都存在的两个类别很容易,但是要阻止其他任何潜在类别的存在就比较困难。您可能会做到。您可能想编写一个查询来查找包含这两个记录的查询,然后对其应用过滤器,以消除所有类别与指定类别不同的​​记录。据我所知,Lucene并不是真正为处理这种搜索而设计的。

老实说,我在使用一个好的过滤器时遇到了麻烦。您可能需要脚本过滤器,或者可以在检索结果之后过滤结果。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368842.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号