如何计算弹性搜索查询结果中关键字的出现次数

时间:2019-04-30 06:10:18

标签: elasticsearch

您好,我正在尝试计算查询结果集中特定关键字的出现次数。例如,我正在尝试以下查询

{
  "query": {
    "bool": {
      "must": {
        "bool": {
          "should": [
            {
              "match": {
                "textlowercase": "bottle"
              }
            },
            {
              "match": {
                "textlowercase": "cow milk"
              }
            }
          ]
        }
      }
    }
  }
}

以上查询将返回我说N个文档。现在,有什么方法可以计算这N个文档中瓶和牛奶的出现情况,这些文档是上述搜索查询的返回结果

2 个答案:

答案 0 :(得分:0)

您可以通过使用聚合来实现。

{
    "size": "0",
    "aggs": {
        "docs_groupName_in": {
            "terms": {"field": "fieldname.keyword","include" : "bottle"}
        },
"docs_groupName_sl": {
            "terms": {"field": "fieldname.keyword","include" : "cow milk"}
        }
    }
}

答案 1 :(得分:0)

{
  "query": {
    "bool": {
      "must": {
        "bool": {
          "should": [{
              "match": {
                "textlowercase": "bottle"
              }
            },
            {
              "match": {
                "textlowercase": "cow milk"
              }
            }
          ]
        }
      }
    }
  },
  "aggs": {
    "docs_bottle": {
      "terms": {
        "field": "textlowercase",
        "include": "bottle"
      }
    },
    "docs_cow_milk": {
      "terms": {
        "field": "fieldname.keyword",
        "include": "cow milk"
      }
    }
  }
}

上述查询已解决了此问题。但是,它不计算包含一个以上单词的单词,例如牛奶