code: def test_es_sink_dynamic_key_none(self):
      ds = self.env.from_collection(
          [{"name": "ada", "id": "1"}, {"name": "luna", "id": "2"}],
          type_info=Types.MAP(Types.STRING(), Types.STRING()),
      )
  
      es_dynamic_index_sink = (
          Elasticsearch7SinkBuilder()
          .set_emitter(ElasticsearchEmitter.dynamic_index("name"))
          .set_hosts(["localhost:9200"])
          .build()
      )
  
      j_emitter = get_field_value(
          es_dynamic_index_sink.get_java_function(), "emitter"
      )
      self.assertTrue(
          is_instance_of(
              j_emitter,
              "org.apache.flink.connector.elasticsearch.sink.MapElasticsearchEmitter",
          )
      )
  
      ds.sink_to(es_dynamic_index_sink).name("es dynamic index sink")
  
file_path: flink/flink-python/pyflink/datastream/connectors/tests/test_elasticsearch.py
imports: from pyflink.common import Types
  from pyflink.datastream.connectors import DeliveryGuarantee
  from pyflink.datastream.connectors.elasticsearch import Elasticsearch7SinkBuilder, FlushBackoffType, ElasticsearchEmitter
  from pyflink.testing.test_case_utils import PyFlinkStreamingTestCase
  from pyflink.util.java_utils import get_field_value, is_instance_of
label_desc: Use image node_id 4 for calling the FlinkElasticsearch7Test obj's underlying member method code with example usage: obj.test_es_sink_dynamic_key_none() without return types