Canvasで指定した値をもつフィールドのみをリスト化したい

お世話になります。

ある1つのドキュメントにおいて、Canvasで指定した値をもつフィールドのみをリスト化したいのですが、今一つアイデアが浮かびません。
何か良い方法があればご教示いただけませんでしょうか。

やりたいこと

たとえば下記のデータにおいて、checkX における値が”OK”のフィールドのみを取り出したいです。

POST test_index/_bulk
{"index":{"_id":"1"}}
{"title":"testdata-1","testdate":"2020-12-24T00:00:00+09:00","check1":"OK","check2":"NG","check3":"OK","check4":"OK","check5":"NG"}

この場合ですと、期待値はcheck1、check3、check4が取り出され以下のようにリスト表示されるということになります。

key
check1
check3
check4

動作環境

  • Elasticsearch 7.3.0
  • Kibana 7.3.0

何かアイデアをお持ちの方がおられましたら、ご教示くださいますと幸いです。
よろしくお願いします。

自分が軽く調べた感じですと、下記のレベルくらいにしか絞り込みができなかったので
恐らく、RESTAPIで取得した結果をコードやシェルとかで加工するしかないように思えます
※Elasticsearch SQLは試してないのでもしかしたらできるかもしれません・・・

GET test_index/_search?filter_path=hits.hits._source
{
  "query": { "match": { "check1": "OK" } },
  "_source": {
       "includes": ["check1"]
  }
}

return

{
  "hits" : {
    "hits" : [
      {
        "_source" : {
          "check1" : "OK"
        }
      }
    ]
  }
}

@taku333 さん
お返事ありがとございました。お礼が遅くなり申し訳ありません。
一発で実現させるのは少し難しそうですね。。。
何かしら加工を一段噛ませる方法で検討したいと思います。ありがとうございました!

1 Like