お世話になります。
Elasticsearch 5.4.2 から 7.3.0 へのアップデート検証を行っていたところ、significant_termsの挙動が異なっていました。
mappings
"keywords": {
"type": "text",
"index_options": "freqs",
"norms": false,
"fields": {
"raw": {
"type": "keyword",
"ignore_above": 256
}
}
}
...
検索で使用したクエリ
{
"query": {
"query_string": {
"default_operator": "AND",
"query": "keywords:*"
}
},
"size": 0,
"aggs": {
"sig_keywords": {
"significant_terms": {
"field": "keywords.raw",
"size": 30,
"min_doc_count": 3,
"background_filter": {
"query_string": {
"query": "keywords:*",
"default_operator": "AND"
}
}
}
}
}
}
Response (Elasticsearch 5.4.2)
{
'aggregations':{
'sig_keywords': {
'doc_count': 1798271,
'buckets':[
{'key': 'りんご', 'doc_count': 622344, 'score': 0.149700525325334, 'bg_count': 627509},
{'key': 'ぶどう', 'doc_count': 391372, 'score': 0.09621372052089101, 'bg_count': 392015},
{'key': 'なし', 'doc_count': 277625, 'score': 0.06527967457084201, 'bg_count': 281842},
...
]
}
}
...
}
Response (Elasticsearch 7.3.0)
{
'aggregations':{
'sig_keywords': {
'doc_count': 1798271,
'bg_count': 1798271,
'buckets':[]
}
}
...
}
foreground queryとbackground queryの結果が同じ場合、scoreの算出ができずbucketsが出力されないのかなと思っています。
そうであればscoreが算出できてしまっているのが5.4.2のバグで、それが修正されたのかとrelease noteを探してみたのですがそれらしい内容を見つけられませんでした。
もし5.4.2時点の挙動が正しいのであれば7.3.0の挙動はバグのようにも見えます。
7.3.0でのこの挙動は正しい動きなんでしょうか?