如何让Elasticsearch聚合以与Solr方面类似的方式忽略过滤器

时间:2017-04-27 08:52:29

标签: elasticsearch solr elasticsearch-aggregation

在Solr,you can keep the counts for certain facets despite filters being set。有没有办法为Elasticsearch Aggregates启用类似的功能?

(我已经找到了一些现已停止使用的Elasticsearch方面的例子,但我认为这个问题必须再次针对Aggregates回答。)

示例:

    q=*      q=foo   q=foo        q=foo&filter=A:2,B:1
                     &filter=A:2                     
    AggA     AggA    AggB         AggB
    1(10)    1(5)    *2(5)*       *2(5)*
    2(10)    2(5)
    3(10)    1(10)

    AggB     AggB    AggB         AggB
    1(10)    1(10)    1(10)         1(10)
    2(10)    2(10)    2(10)         2(10)
    3(10)    3(10)    3(10)         3(10)

我有一个关于尝试Global Aggretion的建议,但是我能让全局聚合工作的唯一方法就是这样(将AggB配置为全局聚合):

#include <QApplication>
#include <QDebug>
#include <QLocale>
#include <QTranslator>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator translator;
    const QString dir = "/usr/share/qt5/translations";

    if (translator.load("qt_fr", dir)) {
        qDebug() << "first load succeeded:"
                 << "'Open' =>" << translator.translate("QShortcut", "Open");
    }

    if (translator.load(QLocale::French, "qt", "_", dir)) {
        qDebug() << "second load succeeded:"
                 << "'Open' =>" << translator.translate("QShortcut", "Open");
    }
}

1 个答案:

答案 0 :(得分:1)

您应该可以使用global aggregation实现此目的。

它不允许像Solr一样灵活,因为在Solr中你可以拥有许多标签,只排除其中的一部分,但功能就在那里。