我有一个包含文档的弹性搜索索引,这些文档具有带有“重要性”字段的嵌套文档。
我尝试查询嵌套文档并获取父文档的分数,这是嵌套文档的“重要性”字段的总和(我使用“function_score”查询执行此操作)
现在的问题是:我有一个动态的术语计数。因此,查询规范化每次都有不同的因素。这使我很难调试我的查询。
实施例
device_1
component_1 (importance: 1)
component_2 (importance: 0.5)
component_3 (importance: 0.2)
component_4 (importance: 1.5)
device_2
component_1 (importance: 0.3)
component_3 (importance: 2)
component_4 (importance: 1)
设备是文档,组件是嵌套文档。
现在,当我搜索“component_3”和“component_2”时,我希望得到以下结果:
device_1, score: 0.7 (0.2 + 0.5)
device_2, score: 2 (2)
但是当我搜索一个或两个或三个组件时,查询规范化因子是不同的。所以我总是得到不同的分数,并且很难调试并查明查询是否能够完成它应该做的事情。
是否可以禁用查询规范化?还有其他想法来处理固定分数吗?我不需要我的查询可比,我需要它们是可理解的。
答案 0 :(得分:1)
您可以尝试使用"替换" as" boost_mode" https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html