Skip to content

Commit 64fecb1

Browse files
feat(oss-opensearch): Add replication type configuration option (#627)
* feat(oss-opensearch): Add replication type configuration option * fix: format code with linting
1 parent 40dd2ba commit 64fecb1

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

vectordb_bench/backend/clients/oss_opensearch/config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class OSSOpenSearchIndexConfig(BaseModel, DBCaseConfig):
7676
use_routing: bool = False # for label-filter cases
7777
oversample_factor: float = 1.0
7878
quantization_type: OSSOpenSearchQuantization = OSSOpenSearchQuantization.fp32
79+
replication_type: str | None = "DOCUMENT"
7980

8081
@root_validator
8182
def validate_engine_name(cls, values: dict):
@@ -101,6 +102,7 @@ def __eq__(self, obj: any):
101102
and self.number_of_segments == obj.number_of_segments
102103
and self.use_routing == obj.use_routing
103104
and self.quantization_type == obj.quantization_type
105+
and self.replication_type == obj.replication_type
104106
)
105107

106108
def __hash__(self) -> int:
@@ -114,6 +116,7 @@ def __hash__(self) -> int:
114116
self.number_of_segments,
115117
self.use_routing,
116118
self.quantization_type,
119+
self.replication_type,
117120
)
118121
)
119122

vectordb_bench/backend/clients/oss_opensearch/oss_opensearch.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ def _create_index(self, client: OpenSearch) -> None:
228228
ef_search_value = self.case_config.efSearch
229229
log.info(f"Creating index with ef_search: {ef_search_value}")
230230
log.info(f"Creating index with number_of_replicas: {self.case_config.number_of_replicas}")
231+
log.info(f"Creating index with replication_type: {self.case_config.replication_type}")
231232
log.info(f"Creating index with engine: {self.case_config.engine}")
232233
log.info(f"Creating index with metric type: {self.case_config.metric_type_name}")
233234
log.info(f"All case_config parameters: {self.case_config.__dict__}")
@@ -247,6 +248,7 @@ def _create_index(self, client: OpenSearch) -> None:
247248
"number_of_replicas": self.case_config.number_of_replicas,
248249
"translog.flush_threshold_size": self.case_config.flush_threshold_size,
249250
"knn.advanced.approximate_threshold": "-1",
251+
"replication.type": self.case_config.replication_type,
250252
},
251253
"refresh_interval": self.case_config.refresh_interval,
252254
}

vectordb_bench/frontend/config/dbCaseConfigs.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,6 +1705,17 @@ class CaseConfigInput(BaseModel):
17051705
inputConfig={"value": "60s", "placeholder": "e.g. 30s, 1m"},
17061706
)
17071707

1708+
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch = CaseConfigInput(
1709+
label=CaseConfigParamType.replication_type,
1710+
displayLabel="Replication Type",
1711+
inputHelp="Replication strategy: DOCUMENT (default) or SEGMENT",
1712+
inputType=InputType.Option,
1713+
inputConfig={
1714+
"options": ["DOCUMENT", "SEGMENT"],
1715+
"default": "DOCUMENT",
1716+
},
1717+
)
1718+
17081719
MilvusLoadConfig = [
17091720
CaseConfigParamInput_IndexType,
17101721
CaseConfigParamInput_M,
@@ -1785,11 +1796,13 @@ class CaseConfigInput(BaseModel):
17851796
AWSOpensearchLoadingConfig = [
17861797
CaseConfigParamInput_EFConstruction_AWSOpensearch,
17871798
CaseConfigParamInput_M_AWSOpensearch,
1799+
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
17881800
]
17891801
AWSOpenSearchPerformanceConfig = [
17901802
CaseConfigParamInput_EFConstruction_AWSOpensearch,
17911803
CaseConfigParamInput_M_AWSOpensearch,
17921804
CaseConfigParamInput_EF_SEARCH_AWSOpensearch,
1805+
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
17931806
]
17941807

17951808
AliyunOpensearchLoadingConfig = []
@@ -2095,6 +2108,7 @@ class CaseConfigInput(BaseModel):
20952108
CaseConfigParamInput_NUMBER_OF_REPLICAS_AWSOpensearch,
20962109
CaseConfigParamInput_NUMBER_OF_INDEXING_CLIENTS_AWSOpensearch,
20972110
CaseConfigParamInput_INDEX_THREAD_QTY_AWSOpensearch,
2111+
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
20982112
CaseConfigParamInput_INDEX_THREAD_QTY_DURING_FORCE_MERGE_AWSOpensearch,
20992113
]
21002114

@@ -2109,6 +2123,7 @@ class CaseConfigInput(BaseModel):
21092123
CaseConfigParamInput_NUMBER_OF_REPLICAS_AWSOpensearch,
21102124
CaseConfigParamInput_NUMBER_OF_INDEXING_CLIENTS_AWSOpensearch,
21112125
CaseConfigParamInput_INDEX_THREAD_QTY_AWSOpensearch,
2126+
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
21122127
CaseConfigParamInput_INDEX_THREAD_QTY_DURING_FORCE_MERGE_AWSOpensearch,
21132128
]
21142129

vectordb_bench/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ class CaseConfigParamType(Enum):
125125
use_rescore = "use_rescore"
126126
oversample_ratio = "oversample_ratio"
127127
use_routing = "use_routing"
128+
replication_type = "replication_type"
128129

129130
dataset_with_size_type = "dataset_with_size_type"
130131
filter_rate = "filter_rate"

0 commit comments

Comments
 (0)