Nested内のオブジェクト数で絞り込みする方法について

Script Queryで頑張ろうとするのは少々しんどそうでしたので、代わりの案を紹介したいです。

似たような例がありました。
@spinscale さんがいうには、オブジェクト数ならオブジェクト数を別フィールドに格納しておけば、より速いクエリが使えるし、コストの高いクエリ(=Scriptクエリ)を使う必要はない、と書かれています。

今回の例ですと、このようにアプローチするのはダメでしょうか?

↓ userオブジェクト部分の数え上げと、別フィールドに値を格納するパイプラインを作成

PUT _ingest/pipeline/my_pipeline
{
    "description": "count user nested object size",
    "processors": [
      {
        "script": {
          "source": """
            if (ctx.user != null) {
              ctx.user_count = ctx.user.size();  
            }
            
          """
        }
      }
    ]
}

ドキュメント登録時に、パイプラインを指定して登録する。

PUT my_index/_doc/1?pipeline=my_pipeline
{
  "user" : [
    {
      "first" : "John",
      "last" :  "Smith"
    }
  ]
}

作成されるIndexで、user_countにuserオブジェクトの数(今回は1)が入る。

{
        "_index" : "my_index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "user_count" : 1,
          "user" : [
            {
              "last" : "Smith",
              "first" : "John"
            }
          ]
        }
      }

このようにしておけば、単純な単一フィールドに対する数値の検索になるため、検索クエリが簡単に作れるかと思います。

Pipelineを使ってuser_count部分を追加しているのは、既存のデータ投入部分に大きな変更を入れなくてもよくて、Pipelineを指定するだけの変更でできそう、ということをお伝えしたかったためです。

ご参考になれば幸いです。