Skip to content

Commit 6d5ffa5

Browse files
committed
Update index option (opensearch-project#284)
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 df6de87 commit 6d5ffa5

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
@@ -27,6 +27,7 @@
2727
import org.opensearch.action.index.IndexRequestBuilder;
2828
import org.opensearch.action.index.IndexResponse;
2929
import org.opensearch.action.search.SearchResponse;
30+
import org.opensearch.action.support.WriteRequest;
3031
import org.opensearch.client.Client;
3132
import org.opensearch.common.bytes.BytesReference;
3233
import org.opensearch.common.settings.ClusterSettings;
@@ -67,6 +68,7 @@ public IndexResponse updateDatasource(final Datasource datasource) throws IOExce
6768
IndexRequestBuilder requestBuilder = client.prepareIndex(DatasourceExtension.JOB_INDEX_NAME);
6869
requestBuilder.setId(datasource.getName());
6970
requestBuilder.setOpType(DocWriteRequest.OpType.INDEX);
71+
requestBuilder.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
7072
requestBuilder.setSource(datasource.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS));
7173
return client.index(requestBuilder.request()).actionGet(clusterSettings.get(Ip2GeoSettings.TIMEOUT));
7274
}

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
@@ -33,6 +33,7 @@
3333
import org.opensearch.action.index.IndexRequest;
3434
import org.opensearch.action.search.SearchRequest;
3535
import org.opensearch.action.search.SearchResponse;
36+
import org.opensearch.action.support.WriteRequest;
3637
import org.opensearch.common.Randomness;
3738
import org.opensearch.common.bytes.BytesReference;
3839
import org.opensearch.common.settings.ClusterSettings;
@@ -75,6 +76,7 @@ public void testUpdateDatasource_whenValidInput_thenSucceed() throws Exception {
7576
assertEquals(datasource.getName(), request.id());
7677
assertEquals(DocWriteRequest.OpType.INDEX, request.opType());
7778
assertEquals(DatasourceExtension.JOB_INDEX_NAME, request.index());
79+
assertEquals(WriteRequest.RefreshPolicy.IMMEDIATE, request.getRefreshPolicy());
7880
return null;
7981
});
8082

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)