【问题标题】:Obtaining boolean clause match counts in Elasticsearch在 Elasticsearch 中获取布尔子句匹配计数
【发布时间】:2016-05-20 19:34:20
【问题描述】:

我们有一些采用以下形式的 Elasticsearch 查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "default_field": "content",
            "query": "Lorem ipsum dolor sit amet"
          }
        },
        {
          "query_string": {
            "default_field": "content",
            "query": "Nunc ac auctor massa"
          }
        }
      ]
    }
  }
}

我们希望显示每个布尔子句的命中数。我们当前的蛮力方法是在幕后执行二次多重搜索,将每个子句拆分为自己的单独查询以获得单独的计数。这可能会变得非常昂贵,因为我们最多支持 50 个这样的子句,这可能会导致在后台执行另外 50 个查询。

我们已经寻找其他方法来提取计数,例如 Get matched terms from Lucene querylucene get matched terms in query 但所有这些都涉及计算实际命中的 bean。这是令人望而却步的,因为我们可能拥有数千个。

是否有另一种更有效的方法/技术(最好在 Elasticsearch 中)来获取我们可能错过的那些计数?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    也许添加过滤器聚合可以做到:

    {
      "query": {
        "bool": {
          "should": [
            {
              "query_string": {
                "default_field": "content",
                "query":  "Lorem ipsum dolor sit amet"
              }
            },
            {
              "query_string": {
                "default_field": "content",
                "query": "Nunc ac auctor massa"
              }
            }
          ]
        }
    },
      "aggs": {
        "2": {
          "filters": {
            "filters": {
              "message:fake": {
                "query": {
                  "query_string": {
                    "query": "content: \"Lorem ipsum dolor sit amet\"",
                    "analyze_wildcard": true
                  }
                }
              },
              "message:data": {
                "query": {
                  "query_string": {
                    "query": "content:\"Nunc ac auctor massa\"",
                    "analyze_wildcard": true
                  }
                }
              }
            }
          }
        }
      }
    }
    

    这样您就会知道它们分别显示了多少个文档。

    【讨论】:

    • 太棒了!应该这样做!
    • 如果有帮助会很高兴:)
    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多