Skip to content

Commit

Permalink
Merge pull request #51 from zilliztech/opensearch
Browse files Browse the repository at this point in the history
add vector support for opensearch
  • Loading branch information
nianliuu authored Feb 6, 2025
2 parents f8c5729 + 44083a1 commit 677c1f3
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.IP_RANGE;
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.JOIN;
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.KEYWORD;
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.KNN_VECTOR;
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.LONG;
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.LONG_RANGE;
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.MATCH_ONLY_TEXT;
Expand Down Expand Up @@ -107,8 +108,9 @@ public Column convert(BasicTypeDefine<EsType> typeDefine) {
break;
case DENSE_VECTOR:
case VECTOR:
String elementType =
typeDefine.getNativeType().getOptions().get("element_type").toString();
case KNN_VECTOR:
String elementType = typeDefine.getNativeType().getOptions().containsKey("element_type") ?
String.valueOf(typeDefine.getNativeType().getOptions().get("element_type")) : "";
if (elementType.equals("byte")) {
builder.dataType(ArrayType.BYTE_ARRAY_TYPE);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.apache.http.Header;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.message.BasicHeader;
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.KNN_VECTOR;
import static org.apache.seatunnel.connectors.seatunnel.elasticsearch.client.EsType.VECTOR;
import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.JsonNode;
import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.ObjectMapper;
Expand Down Expand Up @@ -680,6 +681,19 @@ private static Map<String, BasicTypeDefine<EsType>> getFieldTypeMappingFromPrope
// es dense_vector dim
typeDefine.scale(fieldProperty.get("dimension").asInt());

} else if (type.equalsIgnoreCase(KNN_VECTOR)) {
//adapt for huawei cloud elastic search
String elementType =
fieldProperty.get("data_type") == null
? "float"
: fieldProperty.get("data_type").asText();
Map<String, Object> options = new HashMap<>();
options.put("element_type", elementType);
typeDefine.nativeType(new EsType(type, options));

// es dense_vector dim
typeDefine.scale(fieldProperty.get("dimension").asInt());

} else if (type.equalsIgnoreCase(DATE)
|| type.equalsIgnoreCase(DATE_NANOS)) {
String format =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public class EsType {
public static final String DATE_NANOS = "date_nanos";
public static final String DENSE_VECTOR = "dense_vector";
public static final String VECTOR = "vector";
public static final String KNN_VECTOR = "knn_vector";
public static final String DOUBLE = "double";
public static final String FLATTENED = "flattened";
public static final String FLOAT = "float";
Expand Down

0 comments on commit 677c1f3

Please sign in to comment.