Skip to content

Commit 00c8428

Browse files
committed
Update index option
1. Make geodata index as hidden 2. Make geodata index as read only allow delete after creation is done 3. Refresh datasource index immediately after update Signed-off-by: Heemin Kim <heemin@amazon.com>
1 parent 76790bd commit 00c8428

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

src/main/java/org/opensearch/geospatial/ip2geo/common/DatasourceFacade.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.opensearch.action.get.GetResponse;
2020
import org.opensearch.action.index.IndexRequestBuilder;
2121
import org.opensearch.action.index.IndexResponse;
22+
import org.opensearch.action.support.WriteRequest;
2223
import org.opensearch.client.Client;
2324
import org.opensearch.common.settings.ClusterSettings;
2425
import org.opensearch.common.xcontent.LoggingDeprecationHandler;
@@ -55,6 +56,7 @@ public IndexResponse updateDatasource(final Datasource datasource) throws IOExce
5556
IndexRequestBuilder requestBuilder = client.prepareIndex(DatasourceExtension.JOB_INDEX_NAME);
5657
requestBuilder.setId(datasource.getName());
5758
requestBuilder.setOpType(DocWriteRequest.OpType.INDEX);
59+
requestBuilder.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
5860
requestBuilder.setSource(datasource.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS));
5961
return client.index(requestBuilder.request()).actionGet(clusterSettings.get(Ip2GeoSettings.TIMEOUT));
6062
}

src/main/java/org/opensearch/geospatial/ip2geo/common/GeoIpDataFacade.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ public class GeoIpDataFacade {
6666
private static final String DATA_FIELD_NAME = "_data";
6767
private static final Tuple<String, Integer> INDEX_SETTING_NUM_OF_SHARDS = new Tuple<>("index.number_of_shards", 1);
6868
private static final Tuple<String, String> INDEX_SETTING_AUTO_EXPAND_REPLICAS = new Tuple<>("index.auto_expand_replicas", "0-all");
69+
private static final Tuple<String, Boolean> INDEX_SETTING_HIDDEN = new Tuple<>("index.hidden", true);
70+
private static final Tuple<String, Boolean> INDEX_SETTING_READ_ONLY_ALLOW_DELETE = new Tuple<>(
71+
"index.blocks.read_only_allow_delete",
72+
true
73+
);
6974
private final ClusterService clusterService;
7075
private final ClusterSettings clusterSettings;
7176
private final Client client;
@@ -88,6 +93,7 @@ public void createIndexIfNotExists(final String indexName) {
8893
final Map<String, Object> indexSettings = new HashMap<>();
8994
indexSettings.put(INDEX_SETTING_NUM_OF_SHARDS.v1(), INDEX_SETTING_NUM_OF_SHARDS.v2());
9095
indexSettings.put(INDEX_SETTING_AUTO_EXPAND_REPLICAS.v1(), INDEX_SETTING_AUTO_EXPAND_REPLICAS.v2());
96+
indexSettings.put(INDEX_SETTING_HIDDEN.v1(), INDEX_SETTING_HIDDEN.v2());
9197
final CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName).settings(indexSettings).mapping(getIndexMapping());
9298
client.admin().indices().create(createIndexRequest).actionGet(clusterSettings.get(Ip2GeoSettings.TIMEOUT));
9399
}
@@ -345,6 +351,12 @@ public void putGeoIpData(final String indexName, final String[] fields, final It
345351
}
346352
client.admin().indices().prepareRefresh(indexName).execute().actionGet(timeout);
347353
client.admin().indices().prepareForceMerge(indexName).setMaxNumSegments(1).execute().actionGet(timeout);
354+
client.admin()
355+
.indices()
356+
.prepareUpdateSettings(indexName)
357+
.setSettings(Map.of(INDEX_SETTING_READ_ONLY_ALLOW_DELETE.v1(), INDEX_SETTING_READ_ONLY_ALLOW_DELETE.v2()))
358+
.execute()
359+
.actionGet(timeout);
348360
}
349361

350362
public AcknowledgedResponse deleteIp2GeoDataIndex(final String index) {

src/test/java/org/opensearch/geospatial/ip2geo/common/DatasourceFacadeTests.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.opensearch.action.get.GetRequest;
2525
import org.opensearch.action.get.GetResponse;
2626
import org.opensearch.action.index.IndexRequest;
27+
import org.opensearch.action.support.WriteRequest;
2728
import org.opensearch.common.bytes.BytesReference;
2829
import org.opensearch.common.settings.ClusterSettings;
2930
import org.opensearch.common.settings.Settings;
@@ -62,6 +63,7 @@ public void testUpdateDatasource() throws Exception {
6263
assertEquals(datasource.getName(), request.id());
6364
assertEquals(DocWriteRequest.OpType.INDEX, request.opType());
6465
assertEquals(DatasourceExtension.JOB_INDEX_NAME, request.index());
66+
assertEquals(WriteRequest.RefreshPolicy.IMMEDIATE, request.getRefreshPolicy());
6567
return null;
6668
});
6769

src/test/java/org/opensearch/geospatial/ip2geo/common/GeoIpDataFacadeTests.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.opensearch.action.admin.indices.delete.DeleteIndexRequest;
4343
import org.opensearch.action.admin.indices.forcemerge.ForceMergeRequest;
4444
import org.opensearch.action.admin.indices.refresh.RefreshRequest;
45+
import org.opensearch.action.admin.indices.settings.put.UpdateSettingsRequest;
4546
import org.opensearch.action.bulk.BulkRequest;
4647
import org.opensearch.action.bulk.BulkResponse;
4748
import org.opensearch.action.search.MultiSearchRequest;
@@ -86,8 +87,10 @@ public void testCreateIndexIfNotExistsWithoutExistingIndex() {
8687
assertTrue(actionRequest instanceof CreateIndexRequest);
8788
CreateIndexRequest request = (CreateIndexRequest) actionRequest;
8889
assertEquals(index, request.index());
89-
assertEquals("1", request.settings().get("index.number_of_shards"));
90+
assertEquals(1, (int) request.settings().getAsInt("index.number_of_shards", 2));
9091
assertEquals("0-all", request.settings().get("index.auto_expand_replicas"));
92+
assertEquals(true, request.settings().getAsBoolean("index.hidden", false));
93+
9194
assertEquals(
9295
"{\"dynamic\": false,\"properties\": {\"_cidr\": {\"type\": \"ip_range\",\"doc_values\": false}}}",
9396
request.mappings()
@@ -178,6 +181,12 @@ public void testPutGeoIpData() throws Exception {
178181
assertEquals(index, request.indices()[0]);
179182
assertEquals(1, request.maxNumSegments());
180183
return null;
184+
} else if (actionRequest instanceof UpdateSettingsRequest) {
185+
UpdateSettingsRequest request = (UpdateSettingsRequest) actionRequest;
186+
assertEquals(1, request.indices().length);
187+
assertEquals(index, request.indices()[0]);
188+
assertEquals(true, request.settings().getAsBoolean("index.blocks.read_only_allow_delete", false));
189+
return null;
181190
} else {
182191
throw new RuntimeException("invalid request is called");
183192
}

0 commit comments

Comments
 (0)