私は過去にいくつかのファセットとフィルタベースの検索をSolrで行ってきましたが、私はElasticsearchとのパリティを達成するのに苦労しています。フィルタに基づいた弾性検索集計カウント
私は集計がクエリの結果に対して計算されること、またはクエリが指定されていない場合はグローバルに計算されることを理解します。これは問題ありませんが、の集計のうちはフィルタの結果に基づいています。
Solrではこれは簡単です。クエリとフィルタを指定するだけですが、Elasticsearchではフィルタが集計に影響を与えず、ドキュメントは非常に混乱します。
{
"size": 0,
"query": {
"range": {
"published": {
"gte": "now-1y",
"lt": "now"
}
}
},
"filter": {
{
"term": {
"tag.id": "123"
}
},
{
"term": {
"tag.id": "456"
}
},
},
"aggs": {
"tags": {
"nested": {
"path": "tag"
},
"aggs": {
"suggestions": {
"terms": {
"field": "name",
"size": 10,
"min_doc_count": 1
},
"aggs": {
"id": {
"terms": {
"field": "id",
"size": 1
}
}
}
}
}
}
}
}
および実施例マッピングを与え:以下のクエリの
私の所望の出力は、クエリにスコープされるが、得られるカウントは、その中に指定されたfilter
にスコープされるsuggestions
バケットのある
{
"mappings":{
"content":{
"properties":{
"id":{
"type":"string",
"index":"not_analyzed"
},
"title":{
"type":"string"
},
"byline":{
"type":"string",
"index":"not_analyzed"
},
"body":{
"type":"string"
},
"publishedDate":{
"type":"date",
"format":"dateOptionalTime"
},
"tag":{
"type":"nested",
"include_in_parent":true,
"properties":{
"id":{
"type":"integer"
},
"name":{
"type":"string"
}
}
}
}
}
}
}
何か助けていただければ幸いです。
[フィルタリングされた集計](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html)を使用しようとしましたか? –
私ははいが、私は期待した結果を得ることができませんでした。私はさらに調査します。 –
私はあなたが何をしようとしているのかよく分かりません。説明できますか? –