As for the no-data, can you provide some sample data? How does your data-table look like? It's important that the join-field China administrative division codes exactly matches the field-values of that geoip.region_code field. I expect this is not the case. To see the field-values for all the layers, you can check https://maps.elastic.co/#file/China%20Provinces.
If I used, China administrative division codes and geoip.region_code: I encountered the Fatal Error.
While if I used, Province name (English) and geoip.region_name: The Guangxi Zhuang Autonomous Region, Ningxia Hui Autonomous Region and Inner Mongolia provinces had no data but, the rest of China regions were OK.
Since in my data, the name of the above regions are like these:
Guangxi Ningsia Hui Autonomous Region Inner Mongolia Autonomous Region
You may name the scripted field geoip.region_iso_code. Then you can create a Terms Aggregation on the geoip.region_iso_code field and select "ISO-3166-2 Identifier" as the Join Field in the Options tab.
The screenshots below show a region map created with Australia States.
You should also set a filter on the region map for geoip.country_code2.keyword is "CN" to limit the search to only China.
China Provinces works for me when I download and specify the latest MaxMind GeoLite2 database in Logstash. It looks like you may be using an older version of the GeoLite2 City database. The version of the GeoLite2 databases that come with Logstash are older versions which does not have the latest region codes for China. So you might need to use the latest GeoLite2 City database with Logstash to re-ingest your data again.
Alternatively, it may be possible to use a Painless scripted field to rename your data to match the region name. This example uses the Elvis operator to rename provinces if necessary. Then you may be able to use the new field to join to the English name.