Hi @Adam_Lin Welcome to the community.
ILM is not meant to be based on minutes and / or MB... It's meant for GB , hours and days, and it works very well for production use cases.
ILM is a background/ lower priority task and run based on the policy opportunistically.
You are one of many people that have tried to build ilm policies built on minutes or small sizes... It's not going to work as you expect it to.
Perhaps look at these threads
It will work as you're expected to for actual production volumes and timelines.
I assume you are just testing to see how it works..
Go ahead and set for realistic values 10-50GB and / or multiple hours or daily and it will rollover within a small percentage of the policy
Also not sure how you set up your cluster, do you have warm nodes that you are expecting the indices to move to? If so how did you define them? If there is nowhere valid to move the index it will stay in the current phase... so no warm nodes... no warm phase... then no delete phase...