So many segments under 2mb

The default parameter index.merge.policy.floor_segment is 2mb,
but why there are still so many segments under 2mb,
even through I send command POST indices_name/_forcemerge many times.

It would help if you provide some more information about your cluster, which version you are using and how you are indexing data into your cluster.

version:ES 7.12
Using bulk to load data.

With configuration:

      "merge" : {
          "scheduler" : {
            "max_thread_count" : "4",
            "auto_throttle" : "true",
            "max_merge_count" : "9"
          "policy" : {
            "reclaim_deletes_weight" : "2.0",
            "floor_segment" : "2mb",
            "max_merge_at_once_explicit" : "30",
            "max_merge_at_once" : "10",
            "max_merged_segment" : "5gb",
            "expunge_deletes_allowed" : "10.0",
            "segments_per_tier" : "10.0",
            "deletes_pct_allowed" : "33.0"

Are these the defaults? If not, how did you arrive at these values?

What is your refresh interval set to? Are you manually invoking refreshes while indexing or querying?

It default configuration.
refresh interval is 1s with default too.

Is this causing any problems? How large is the shard/index?

What is the output of the index stats API?

No problem yet.
But it makes confuse about so many segments under 2mb with the index.merge.policy.floor_segment is 2mb.
This floor_segment setting do not means it will run a merge to these segment under 2mb in one shard?