私のすべてのユーザーには、それらに関連付けられた都市があり、集計を行っています。私はいつもUnspecified
フィールドを集計応答から返して、自分の都市に入っていないユーザーを取得します。カウントがトップ10にあるかどうかにかかわらず、結果として常にUnspecified
を得る方法はありますか?都市の数が非常に大きいので、私はちょうどUnspecified
の数を得るためにそれらのすべてを照会したくありません。弾性検索集計:用語集のフィールドを常に返します
データスキーマです:
"mappings": {
"users": {
"dynamic": "false",
"_all": {
"enabled": false
},
"properties": {
"city": {
"properties": {
"geopoint": {
"type": "geo_point"
},
"name": {
"type": "string",
"index": "not_analyzed"
}
}
},
"id": {
"type": "integer"
}
...}
集約私がやっている:
{
"aggs" : {
"cities" : {
"terms" : { "field" : "city.name" }
}
}
}
は、私はいくつかの他のクエリとフィルタを持っています。この集約は正常に動作します。私はトップ10都市のリストを取得しますが、私はまたUnspecified
期待される結果の数があるた:
"aggregations" : {
"cities" : {
"buckets" : [
{
"key" : "New York",
"doc_count" : 120
},
{
"key" : "Chicago",
"doc_count" : 50
},
.
.
.
{
"key" : "Unspecified",
"doc_count" : 4
},
]
}
}
いくつかのサンプル文書と期待される集計結果を表示できますか? – Val
https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-exists-query.html not existsクエリでデータをフィルタリングし、それらを集計することができます。 – hkulekci
@Valデータマッピングと期待される結果を追加しました – Pooja