弹性搜索。 _Score在聚合中为空。为什么呢?

时间:2015-12-09 09:56:43

标签: elasticsearch full-text-search aggregation relevance

我使用ES v 1.7。 ES仅在" hits"中返回_score部分,但我对" hits"不感兴趣,我需要来自"聚合的数据"响应与_score 的部分。为什么ES会这样做以及如何解决它?

Requset:

{
    "size": 1,
        "query": {
            "bool": {
                "must": [
                    { "match": {"_all": {"query": "test","operator": "and","fuzziness": "2"}}}
                ],
                "should": [
                    { "multi_match" : {
                            "query":      "test"
                            ,"type":       "best_fields"
                            ,"fields":     ["ObjectData.PRTNAME","ObjectData.EXTERNALID","ObjectData.contactList.VALUE","*SERIES","*NUMBER","ObjectData.INN"]
                            ,"operator":   "or"
                            ,"boost": 3
                    }}
                ]
            } 
        },   
  "aggs": {
    "byObjectID": {
      "terms": {"field": "ObjectID"},
      "aggs": {
        "latestVer": {
          "top_hits": {
            "sort": [{"creationDate": { "order": "desc" }}]
            ,"_source": { "include": ["ObjectData.BRIEFNAME", "creationDate", "ObjectID" ]}
            ,"size": 1
          }
        }
      }
    }
  }
}

响应:

{
   "took": 16,
   "timed_out": false,
   "_shards":    {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits":    {
      "total": 87,
      "max_score": 5.3479624,
      "hits": [      {
         "_index": "crmws",
         "_type": "participant",
         "_id": "AVFtAkIcSH3HWHh0wIkd",
         "_score": 5.3479624,
         "_source":          {
            "mostRecentVersion": null,
            "UserLogin": "ap",
            "creationDate": "2015-12-04T12:40:43.292Z",
            "_id": null,
            "ObjectID": 26784418,
            "EventID": null,
            "version_id": 3798,
            "ObjectTypeId": null,
            "ObjectData":   {...},
            "ObjectTypeSysName": "participant",
            "versionNumber": null
         }
      }]
   },
   "aggregations": {"byObjectID":    {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets":       [
                  {
            "key": 26745417,
            "doc_count": 21,
            "latestVer": {"hits":             {
               "total": 21,
               "max_score": null,
               "hits": [               {
                  "_index": "crmws",
                  "_type": "participant",
                  "_id": "AVFtQCCtSH3HWHh0wItF",
                  "_score": null,
                  "_source":                   {
                     "creationDate": "2015-12-04T13:48:17.949Z",
                     "ObjectID": 26745417,
                     "ObjectData": {"BRIEFNAME": "Верный-Преверный В. В."}
                  },
                  "sort": [1449236897949]
               }]
            }}
         },
         ...
      ]
   }}
}

1 个答案:

答案 0 :(得分:3)

由于您正在使用排序,因此您需要明确设置“track_scores”以计算得分。

示例:

{
    "size": 1,
        "query": {
            "bool": {
                "must": [
                    { "match": {"_all": {"query": "test","operator": "and","fuzziness": "2"}}}
                ],
                "should": [
                    { "multi_match" : {
                            "query":      "test"
                            ,"type":       "best_fields"
                            ,"fields":     ["ObjectData.PRTNAME","ObjectData.EXTERNALID","ObjectData.contactList.VALUE","*SERIES","*NUMBER","ObjectData.INN"]
                            ,"operator":   "or"
                            ,"boost": 3
                    }}
                ]
            } 
        },   
  "aggs": {
    "byObjectID": {
      "terms": {"field": "ObjectID"},
      "aggs": {
        "latestVer": {
          "top_hits": {
            "sort": [{"creationDate": { "order": "desc" }}]
            ,"_source": { "include": ["ObjectData.BRIEFNAME", "creationDate", "ObjectID" ]}
            ,"size": 1,
            'track_scores" : 1
          }
        }
      }
    }
  }


}