Skip to content
33 changes: 31 additions & 2 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,17 +249,33 @@ async def init_index(opensearch_client=None):
)
else:
logger.info(
"Index already exists, skipping creation",
"Index already exists, skipping creation and changing number of replicas",
index_name=index_name,
embedding_model=embedding_model,
)
# Set number of replicas to 0 to not create unused nodes in OpenSearch, in case it was created with more replicas
current = await os_client.indices.get_settings(index=index_name)
current_replicas = int(
current[index_name]["settings"]["index"].get("number_of_replicas", 1)
)
if current_replicas != 0:
await os_client.indices.put_settings(
index=index_name,
body={"index": {"number_of_replicas": 0}},
)
logger.info(
"Updated documents index settings",
)
await TelemetryClient.send_event(
Category.OPENSEARCH_INDEX, MessageId.ORB_OS_INDEX_EXISTS
)

# Create knowledge filters index
knowledge_filter_index_name = "knowledge_filters"
knowledge_filter_index_body = {
"settings": {
Comment thread
lucaseduoli marked this conversation as resolved.
"index": {"number_of_replicas": 0, "number_of_shards": 1},
},
"mappings": {
"properties": {
"id": {"type": "keyword"},
Expand All @@ -273,7 +289,7 @@ async def init_index(opensearch_client=None):
"created_at": {"type": "date"},
"updated_at": {"type": "date"},
}
}
},
}

if not await os_client.indices.exists(index=knowledge_filter_index_name):
Expand All @@ -293,6 +309,19 @@ async def init_index(opensearch_client=None):
index_name=knowledge_filter_index_name,
)

current = await os_client.indices.get_settings(index=knowledge_filter_index_name)
current_replicas = int(
current[knowledge_filter_index_name]["settings"]["index"].get("number_of_replicas", 1)
)
if current_replicas != 0:
await os_client.indices.put_settings(
index=knowledge_filter_index_name,
body={"index": {"number_of_replicas": 0}},
)
logger.info(
"Updated knowledge filters index settings",
)

# Create API keys index for public API authentication
if not await os_client.indices.exists(index=API_KEYS_INDEX_NAME):
await os_client.indices.create(
Expand Down
2 changes: 1 addition & 1 deletion src/utils/embeddings.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ async def create_dynamic_index_body(
"settings": {
"index": {"knn": True},
"number_of_shards": 1,
"number_of_replicas": 1,
"number_of_replicas": 0
},
"mappings": {
"properties": {
Expand Down
Loading