弹性搜索中的多选聚合

时间:2019-12-31 06:48:15

标签: elasticsearch spring-data

我有一个场景,需要允许用户选择构面上的多个值。

我有一个方面,称为状态:方面值分别为state1(20),state2(10),state3(30)。

当我选择state1时,我收到20个结果,但是其他2个值不是来自弹性搜索。我需要允许用户选择state2或state3进行操作。

任何建议, 提前致谢。 斯里

2 个答案:

答案 0 :(得分:1)

取决于您如何设计应用程序以及相应的Elasticsearch查询。如果最终在查询中将state1作为必须条件,则显然在查询结果的“聚合”部分中不会出现state2和state3。我认为您正在使用相同的查询来获取数据和构面。在这种情况下,这是预期的行为。您需要将聚合查询和结果查询分开,并使用聚合查询结果来显示可供选择的方面。

答案 1 :(得分:0)

如果您在同一字段中进行搜索,我相信您的查询(应使用)将如下所示:

{
    "size": 10,
    "query": {
        "bool": {
            "should": {
                "terms": 
                    {"states": ["state1", "state2"] }
            }
        }
    }
}

这将包括状态为“ state1”或“ state2”的结果。