フィルタリングルールに基づいて表示されるドキュメントの数を集計してカウントしたいと思います。Elastic Search APIを使用した集計結果のフィルタリング
私は彼らのウェブサイトからのAPIを見て:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filters-aggregation.html
これで出てきた:
{ "size": 0,
"aggregations": {
"messages": {
"filters":{
"filters": {
"knowledge service": { "match": {"syslog_msg": "my-domain.com"}}
}
}
}
}
}
"syslog_msg" とは、 "my-domain.com他のいくつかの値" などの情報を含めることができます。
私が得た応答:
{
"_scroll_id" : "some scroll id",
"took" : 89,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1000000,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"messages" : {
"buckets" : {
"knowledge service" : {"doc_count" : 12000}
}
}
}
}
私のこのような場合には(それが正常に動作しているようだが、私は12000回の記録を見て、クエリを実行したときに、それらのいくつかは、文字列に正確に一致する必要はありません-domain.com)を検索しました。
たとえば、一部のドキュメントでは、「my-domain.com」ではなくsyslog_msgに「my」という文字列が含まれています。
私が探している文字列と完全に一致するようにクエリを変更するにはどうすればよいですか?
ソリューションは、完全に一致する語句を検索し、返されたmatch_phraseとの一致を置き換えることですelasticsearch文書は(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html)言うようにあなたがあなたのフィルタ
に集計を追加する必要があります