diff --git a/.run/milvus drop localhost.run.xml b/.run/milvus drop localhost.run.xml
new file mode 100644
index 000000000..5354c20c2
--- /dev/null
+++ b/.run/milvus drop localhost.run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/milvus drop on aws.run.xml b/.run/milvus drop on aws.run.xml
new file mode 100644
index 000000000..c6f37afa4
--- /dev/null
+++ b/.run/milvus drop on aws.run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/milvus rampup localhost smoketest .run.xml b/.run/milvus rampup localhost smoketest .run.xml
new file mode 100644
index 000000000..c41626c1b
--- /dev/null
+++ b/.run/milvus rampup localhost smoketest .run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/milvus schema localhost.run.xml b/.run/milvus schema localhost.run.xml
new file mode 100644
index 000000000..4b402fc71
--- /dev/null
+++ b/.run/milvus schema localhost.run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/milvus schema on aws.run.xml b/.run/milvus schema on aws.run.xml
new file mode 100644
index 000000000..9d8469a91
--- /dev/null
+++ b/.run/milvus schema on aws.run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusAdapterUtils.java b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusAdapterUtils.java
new file mode 100644
index 000000000..9ceee6193
--- /dev/null
+++ b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusAdapterUtils.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2024 nosqlbench
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.nosqlbench.adapter.milvus;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class MilvusAdapterUtils {
+ public static final String MILVUS = "milvus";
+
+ public static List splitNames(String input) {
+ assert StringUtils.isNotBlank(input) && StringUtils.isNotEmpty(input);
+ return Arrays.stream(input.split("( +| *, *)"))
+ .filter(StringUtils::isNotBlank)
+ .toList();
+ }
+
+ public static List splitLongs(String input) {
+ assert StringUtils.isNotBlank(input) && StringUtils.isNotEmpty(input);
+ return Arrays.stream(input.split("( +| *, *)"))
+ .filter(StringUtils::isNotBlank)
+ .map(Long::parseLong)
+ .toList();
+ }
+
+
+ /**
+ * Mask the digits in the given string with '*'
+ *
+ * @param unmasked The string to mask
+ * @return The masked string
+ */
+ protected static String maskDigits(String unmasked) {
+ assert StringUtils.isNotBlank(unmasked) && StringUtils.isNotEmpty(unmasked);
+ int inputLength = unmasked.length();
+ StringBuilder masked = new StringBuilder(inputLength);
+ for (char ch : unmasked.toCharArray()) {
+ if (Character.isDigit(ch)) {
+ masked.append("*");
+ } else {
+ masked.append(ch);
+ }
+ }
+ return masked.toString();
+ }
+}
diff --git a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusDriverAdapter.java b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusDriverAdapter.java
index b5da9f44e..7fee71eb2 100644
--- a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusDriverAdapter.java
+++ b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusDriverAdapter.java
@@ -28,7 +28,7 @@ import io.nosqlbench.nb.api.labels.NBLabels;
import java.util.function.Function;
-import static io.nosqlbench.adapter.milvus.MilvusUtils.MILVUS;
+import static io.nosqlbench.adapter.milvus.MilvusAdapterUtils.MILVUS;
@Service(value = DriverAdapter.class, selector = MILVUS)
public class MilvusDriverAdapter extends BaseDriverAdapter, MilvusSpace> {
diff --git a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusDriverAdapterLoader.java b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusDriverAdapterLoader.java
index 3c492c972..fa4cce101 100644
--- a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusDriverAdapterLoader.java
+++ b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusDriverAdapterLoader.java
@@ -21,7 +21,7 @@ import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.api.labels.NBLabels;
-import static io.nosqlbench.adapter.milvus.MilvusUtils.MILVUS;
+import static io.nosqlbench.adapter.milvus.MilvusAdapterUtils.MILVUS;
@Service(value = DriverAdapterLoader.class, selector = MILVUS)
public class MilvusDriverAdapterLoader implements DriverAdapterLoader {
diff --git a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusSpace.java b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusSpace.java
index 43e3a246c..1c18eea8e 100644
--- a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusSpace.java
+++ b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusSpace.java
@@ -27,11 +27,10 @@ import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.nio.file.Files;
-import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-import java.util.Optional;
/**
* The MilvusSpace class is a context object which stores all stateful contextual information needed to interact
@@ -73,6 +72,7 @@ public class MilvusSpace implements AutoCloseable {
var builder = ConnectParam.newBuilder();
builder = builder.withUri(cfg.get("uri"));
cfg.getOptional("database_name").ifPresent(builder::withDatabaseName);
+ cfg.getOptional("database").ifPresent(builder::withDatabaseName);
var requiredToken = cfg.getOptional("token_file")
.map(Paths::get)
@@ -97,7 +97,7 @@ public class MilvusSpace implements AutoCloseable {
ConnectParam connectParams = builder.build();
logger.info(this.name + ": Creating new Milvus/Zilliz Client with (masked) " +
- "token [" + MilvusUtils.maskDigits(builder.getToken()) + "], uri/endpoint [" + builder.getUri() + "]"
+ "token [" + MilvusAdapterUtils.maskDigits(builder.getToken()) + "], uri/endpoint [" + builder.getUri() + "]"
);
return new MilvusServiceClient(connectParams);
}
@@ -117,7 +117,7 @@ public class MilvusSpace implements AutoCloseable {
.setDescription("the URI endpoint in which the database is running.")
)
.add(
- Param.optional("database_name")
+ Param.optional(List.of("database_name","database"))
.setDescription("the name of the database to use. Defaults to 'baselines'")
)
.asReadOnly();
diff --git a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusUtils.java b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusUtils.java
index 1756835cc..bda728e60 100644
--- a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusUtils.java
+++ b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/MilvusUtils.java
@@ -16,47 +16,23 @@
package io.nosqlbench.adapter.milvus;
-import org.apache.commons.lang3.StringUtils;
+import io.milvus.grpc.SearchResults;
+import io.milvus.param.R;
+import io.milvus.response.SearchResultsWrapper;
-import java.util.Arrays;
import java.util.List;
public class MilvusUtils {
- public static final String MILVUS = "milvus";
- public static List splitNames(String input) {
- assert StringUtils.isNotBlank(input) && StringUtils.isNotEmpty(input);
- return Arrays.stream(input.split("( +| *, *)"))
- .filter(StringUtils::isNotBlank)
- .toList();
- }
+ public static int[] intArrayFromMilvusSearchResults(String fieldname, R result) {
- public static List splitLongs(String input) {
- assert StringUtils.isNotBlank(input) && StringUtils.isNotEmpty(input);
- return Arrays.stream(input.split("( +| *, *)"))
- .filter(StringUtils::isNotBlank)
- .map(Long::parseLong)
- .toList();
- }
-
-
- /**
- * Mask the digits in the given string with '*'
- *
- * @param unmasked The string to mask
- * @return The masked string
- */
- protected static String maskDigits(String unmasked) {
- assert StringUtils.isNotBlank(unmasked) && StringUtils.isNotEmpty(unmasked);
- int inputLength = unmasked.length();
- StringBuilder masked = new StringBuilder(inputLength);
- for (char ch : unmasked.toCharArray()) {
- if (Character.isDigit(ch)) {
- masked.append("*");
- } else {
- masked.append(ch);
- }
+ SearchResultsWrapper wrapper = new SearchResultsWrapper(result.getData().getResults());
+ List fieldData = (List) wrapper.getFieldData(fieldname, 0);
+ int[] indices = new int[fieldData.size()];
+ for (int i = 0; i < indices.length; i++) {
+ indices[i]=Integer.parseInt(fieldData.get(i));
}
- return masked.toString();
+ return indices;
+
}
}
diff --git a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetLoadStateOpDispenser.java b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetLoadStateOpDispenser.java
index 2dc0fea40..474346ffa 100644
--- a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetLoadStateOpDispenser.java
+++ b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetLoadStateOpDispenser.java
@@ -19,12 +19,11 @@ package io.nosqlbench.adapter.milvus.opdispensers;
import io.milvus.client.MilvusServiceClient;
import io.milvus.param.collection.GetLoadStateParam;
import io.nosqlbench.adapter.milvus.MilvusDriverAdapter;
-import io.nosqlbench.adapter.milvus.MilvusUtils;
+import io.nosqlbench.adapter.milvus.MilvusAdapterUtils;
import io.nosqlbench.adapter.milvus.ops.MilvusBaseOp;
import io.nosqlbench.adapter.milvus.ops.MilvusGetLoadStateOp;
import io.nosqlbench.adapters.api.templating.ParsedOp;
-import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.LongFunction;
@@ -52,7 +51,7 @@ public class MilvusGetLoadStateOpDispenser extends MilvusBaseOpDispenser pfunc = partitionsF.get();
LongFunction finalEbF = ebF;
- ebF = l -> finalEbF.apply(l).withPartitionNames(MilvusUtils.splitNames(pfunc.apply(l)));
+ ebF = l -> finalEbF.apply(l).withPartitionNames(MilvusAdapterUtils.splitNames(pfunc.apply(l)));
}
final LongFunction lastF = ebF;
diff --git a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetLoadingProgressOpDispenser.java b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetLoadingProgressOpDispenser.java
index f33ca63a3..45416ae21 100644
--- a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetLoadingProgressOpDispenser.java
+++ b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetLoadingProgressOpDispenser.java
@@ -18,16 +18,12 @@ package io.nosqlbench.adapter.milvus.opdispensers;
import io.milvus.client.MilvusServiceClient;
import io.milvus.param.collection.GetLoadingProgressParam;
-import io.milvus.param.collection.GetLoadingProgressParam;
import io.nosqlbench.adapter.milvus.MilvusDriverAdapter;
-import io.nosqlbench.adapter.milvus.MilvusUtils;
import io.nosqlbench.adapter.milvus.ops.MilvusBaseOp;
-import io.nosqlbench.adapter.milvus.ops.MilvusGetLoadStateOp;
import io.nosqlbench.adapter.milvus.ops.MilvusGetLoadingProgressOp;
import io.nosqlbench.adapters.api.templating.ParsedOp;
import java.util.List;
-import java.util.Optional;
import java.util.function.LongFunction;
public class MilvusGetLoadingProgressOpDispenser extends MilvusBaseOpDispenser {
diff --git a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetOpDispenser.java b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetOpDispenser.java
index 530983067..8f8fda8f4 100644
--- a/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetOpDispenser.java
+++ b/adapter-milvus/src/main/java/io/nosqlbench/adapter/milvus/opdispensers/MilvusGetOpDispenser.java
@@ -20,7 +20,7 @@ import io.milvus.client.MilvusServiceClient;
import io.milvus.common.clientenum.ConsistencyLevelEnum;
import io.milvus.param.highlevel.dml.GetIdsParam;
import io.nosqlbench.adapter.milvus.MilvusDriverAdapter;
-import io.nosqlbench.adapter.milvus.MilvusUtils;
+import io.nosqlbench.adapter.milvus.MilvusAdapterUtils;
import io.nosqlbench.adapter.milvus.ops.MilvusBaseOp;
import io.nosqlbench.adapter.milvus.ops.MilvusGetOp;
import io.nosqlbench.adapters.api.templating.ParsedOp;
@@ -28,8 +28,6 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
import java.util.List;
import java.util.function.LongFunction;
-import static org.matheclipse.core.expression.S.l;
-
/**
* Because we are using type-and-target logic to identify the op variant,
* we are limited to a string target value. In this particular op type, the
@@ -66,7 +64,7 @@ public class MilvusGetOpDispenser extends MilvusBaseOpDispenser {
Object testValue = valueFunc.apply(0L);
LongFunction> pidsF;
if (testValue instanceof String string) {
- pidsF = l -> MilvusUtils.splitNames((String) valueFunc.apply(l))
+ pidsF = l -> MilvusAdapterUtils.splitNames((String) valueFunc.apply(l))
.stream().map(s -> (Object) s).toList();
} else if (testValue instanceof List) {
pidsF = l -> (List