私はこのようになります文書持つオーバーカーディナリティ:私は私のクライアントごとに一意のプロジェクト名の数を取得しますクエリを実行しようとしていますElasticsearch - フルフィールド値
{
"_id":"some_id_value",
"_source":{
"client":{
"name":"x"
},
"project":{
"name":"x November 2016"
}
}
}
を。このため、project.name
よりcardinality
のクエリを使用しています。私はこの特定のクライアントのための唯一の4
ユニークなプロジェクト名があると確信しています。しかし、私は私のクエリを実行すると、私は間違っていると知って5
のカウントを取得します。
プロジェクト名にはすべて、クライアントの名前が含まれています。たとえば、クライアントが「X」の場合、プロジェクト名は「X Testing November 2016」または「X Jan 2016」などとなります。これが考慮されるかどうかはわかりません。
この
は、これは私の検索クエリ{
"fields":[
"client.name",
"project.name"
],
"query":{
"bool":{
"must":{
"match":{
"client.name":{
"operator":"and",
"query":"ABC systems"
}
}
}
}
},
"aggs":{
"num_projects":{
"cardinality":{
"field":"project.name"
}
}
},
"size":5
}
ある文書型
{
"mappings":{
"vma_docs":{
"properties":{
"client":{
"properties":{
"contact":{
"type":"string"
},
"name":{
"type":"string"
}
}
},
"project":{
"properties":{
"end_date":{
"format":"yyyy-MM-dd",
"type":"date"
},
"project_type":{
"type":"string"
},
"name":{
"type":"string"
},
"project_manager":{
"index":"not_analyzed",
"type":"string"
},
"start_date":{
"format":"yyyy-MM-dd",
"type":"date"
}
}
}
}
}
}
}
のマッピングであるこれらの私が得る結果は(私は簡潔にするために2件の結果を掲載している)しています。 num_projects集計は5を返しますが、プロジェクトの合計数である4を返す必要があります。
{
"hits":{
"hits":[
{
"_score":5.8553367,
"_type":"vma_docs",
"_id":"AVTMIM9IBwwoAW3mzgKz",
"fields":{
"project.name":[
"ABC"
],
"client.name":[
"ABC systems Pvt Ltd"
]
},
"_index":"vma"
},
{
"_score":5.8553367,
"_type":"vma_docs",
"_id":"AVTMIM9YBwwoAW3mzgK2",
"fields":{
"project.name":[
"ABC"
],
"client.name":[
"ABC systems Pvt Ltd"
]
},
"_index":"vma"
}
],
"total":18,
"max_score":5.8553367
},
"_shards":{
"successful":5,
"failed":0,
"total":5
},
"took":4,
"aggregations":{
"num_projects":{
"value":5
}
},
"timed_out":false
}
はFYI:プロジェクト名はABC
、ABC Nov 2016
、ABC retest November
、ABC Mobile App
テストシナリオの要点はありますか? (インデックス、いくつかのデータサンプルとクエリのマッピング) –
@AndreiStefan - あなたが求めている詳細を追加しました。それが役に立てば幸い。 –