# HTTPS Interface

This section provides a brief overview of how to use the HTTPS interface of MyScale. Since MyScale is compatible with ClickHouse, you can find more details in ClickHouse HTTP Interface (opens new window) documentation.

To access the HTTPS interface, you will need to use the corresponding connection information. Please refer to the Connection Details for instructions on how to obtain it.

You may choose to store this information in an environment variable for easier access, as shown in the example below:

export MYSCALE_CLUSTER_URL=YOUR_CLUSTER_URL
export MYSCALE_USERNAME=YOUR_USERNAME
export MYSCALE_CLUSTER_PASSWORD=YOUR_CLUSTER_PASSWORD

Use the curl command to check if the HTTPS interface is working correctly by making a simple request to the URL:

$ curl $MYSCALE_CLUSTER_URL/ping
Ok.

To verify that the user and password are working correctly, you can make a request to the URL while supplying the user and password. For example:

$ curl "$MYSCALE_CLUSTER_URL" -d 'SELECT 1' \
    -H "X-ClickHouse-User: $MYSCALE_USERNAME" \
    -H "X-ClickHouse-Key: $MYSCALE_CLUSTER_PASSWORD"
1

If the user and password are valid, you will receive a response of 1.

You can create a table with four columns id, data, date and label using the following command:

$ cat << EOF |
CREATE TABLE default.myscale_categorical_search
(
    id    UInt32,
    data  Array(Float32),
    CONSTRAINT check_length CHECK length(data) = 128,
    date  Date,
    label Enum8('person' = 1, 'building' = 2, 'animal' = 3)
)
ORDER BY id;
EOF
$ curl "$MYSCALE_CLUSTER_URL" -d @- \
    -H "X-ClickHouse-User: $MYSCALE_USERNAME" \
    -H "X-ClickHouse-Key: $MYSCALE_CLUSTER_PASSWORD"

We create a CSV file data.csv with the following data:

$ cat > data.csv <<EOF
0,"[0,0,0,1,8,7,3,2,5,0,0,3,5,7,11,31,13,0,0,0,0,29,106,107,13,0,0,0,1,61,70,42,0,0,0,0,1,23,28,16,63,4,0,0,0,6,83,81,117,86,25,15,17,50,84,117,31,23,18,35,97,117,49,24,68,27,0,0,0,4,29,71,81,47,13,10,32,87,117,117,45,76,40,22,60,70,41,9,7,21,29,39,53,21,4,1,55,72,3,0,0,0,0,9,65,117,73,37,28,23,17,34,11,11,27,61,64,25,4,0,42,13,1,1,1,14,10,6]","2030-09-26","person"
1,"[65,35,8,0,0,0,1,63,48,27,31,19,16,34,96,114,3,1,8,21,27,43,57,21,11,8,37,8,0,0,1,23,101,104,11,0,0,0,0,29,83,114,114,77,23,14,18,52,28,8,46,75,39,24,59,60,2,0,18,10,20,52,52,16,12,28,4,0,0,3,5,8,102,79,58,3,0,0,0,11,114,112,78,50,17,14,45,104,19,31,53,114,73,44,34,26,3,2,0,0,0,1,8,9,34,20,0,0,0,0,1,23,30,75,87,36,0,0,0,2,0,17,66,73,3,0,0,0]","1996-06-22","building"
2,"[0,0,0,0,0,0,4,1,15,0,0,0,0,0,10,49,27,0,0,0,0,29,113,114,9,0,0,0,3,69,71,42,14,0,0,0,0,1,56,79,63,2,0,0,0,38,118,77,118,60,8,8,18,48,59,104,27,16,7,13,80,118,34,21,118,47,4,0,0,1,32,99,61,40,31,57,46,118,118,61,80,64,16,21,20,33,23,27,6,22,16,14,51,33,0,0,76,40,8,0,2,14,42,94,19,42,57,67,23,34,22,10,9,52,15,21,5,1,3,3,1,38,12,5,18,1,0,0]","1975-10-07","animal"
3,"[3,9,45,22,28,11,4,3,77,10,4,1,1,4,3,11,23,0,0,0,26,49,6,7,5,3,3,1,11,50,8,9,11,7,15,21,12,17,21,25,121,12,4,7,4,7,4,41,28,2,0,1,10,42,22,20,1,1,4,9,31,79,16,3,23,4,6,26,31,121,87,40,121,82,16,12,15,41,6,10,76,48,5,3,21,42,41,50,5,17,18,64,86,54,17,6,43,62,56,84,116,108,38,26,58,63,20,87,105,37,2,2,121,121,38,25,44,33,24,46,3,16,27,74,121,55,9,4]","2024-08-11","animal"
4,"[6,4,3,7,80,122,62,19,2,0,0,0,32,60,10,19,4,0,0,0,0,10,69,66,0,0,0,0,8,58,49,5,5,31,59,67,122,37,1,2,50,1,0,16,99,48,3,27,122,38,6,7,11,31,87,122,9,8,6,23,122,122,69,21,0,11,31,55,28,0,0,0,61,4,0,37,43,2,0,15,122,122,55,32,6,1,0,12,5,22,52,122,122,9,2,0,2,0,0,5,28,20,2,2,19,3,0,2,12,12,3,16,25,18,34,35,5,4,1,13,21,2,22,51,9,20,57,59]","1970-01-31","animal"
5,"[6,2,19,22,22,81,31,12,72,15,12,10,3,6,1,37,30,17,4,2,9,4,2,21,1,0,1,3,11,9,5,2,7,11,17,61,127,127,28,13,49,36,26,45,28,17,4,16,111,46,11,2,7,25,40,89,2,0,8,31,63,60,28,12,0,18,82,127,50,1,0,0,94,28,11,88,15,0,0,4,127,127,34,23,25,18,18,69,6,16,26,90,127,42,12,8,0,3,46,29,0,0,0,0,22,35,15,12,0,0,0,0,46,127,83,17,1,0,0,0,0,14,67,115,45,0,0,0]","2025-04-02","building"
6,"[19,35,5,6,40,23,18,4,21,109,120,23,5,12,24,5,0,5,87,108,47,14,32,8,0,0,0,27,36,30,43,0,29,12,10,15,6,7,17,12,34,9,14,65,20,23,28,14,120,34,14,14,9,34,120,120,7,6,7,27,56,120,120,23,9,5,4,7,2,6,46,13,29,5,5,32,12,20,99,19,120,120,107,38,13,7,24,36,6,24,120,120,55,26,4,3,5,1,0,0,1,5,19,18,2,2,0,1,18,12,30,7,0,5,33,29,66,50,26,2,0,0,49,45,12,28,10,0]","2007-06-29","animal"
7,"[28,28,28,27,13,5,4,12,4,8,29,118,69,19,21,7,3,0,0,14,14,10,105,60,0,0,0,0,11,69,76,9,5,2,18,59,17,6,1,5,42,9,16,75,31,21,17,13,118,44,18,16,17,30,78,118,4,4,8,61,118,110,54,25,10,6,21,54,5,5,6,5,38,17,11,31,6,24,64,15,115,118,117,61,13,13,22,25,2,11,66,118,87,25,10,2,10,11,3,2,9,28,4,5,21,18,35,17,6,10,4,30,20,2,13,13,7,30,71,118,0,0,3,12,50,103,44,5]","1970-09-10","building"
8,"[41,38,21,17,42,71,60,50,11,1,2,11,109,115,8,4,27,8,5,22,11,9,8,14,20,10,4,33,12,7,4,1,18,115,95,42,17,1,0,0,19,6,46,115,91,16,0,7,66,7,4,15,12,32,91,109,12,3,1,8,21,115,96,17,1,51,78,14,0,0,0,0,50,40,62,53,0,0,0,3,115,115,40,12,6,13,25,65,7,30,51,65,110,92,25,9,0,1,13,0,0,0,0,0,4,22,11,1,0,0,0,0,13,115,48,1,0,0,0,0,0,36,102,63,11,0,0,0]","2007-10-26","person"
9,"[0,0,0,0,0,2,6,4,0,0,0,0,0,1,44,57,0,0,0,0,0,15,125,52,0,0,0,0,6,57,44,2,23,1,0,0,0,6,20,23,125,30,5,2,1,3,73,125,16,10,11,46,61,97,125,93,0,0,0,31,111,96,21,0,20,6,0,0,9,114,63,5,125,125,83,8,2,26,5,23,14,56,125,125,37,10,7,10,11,2,17,87,42,5,8,19,0,0,7,32,56,91,8,0,1,17,17,3,14,71,15,5,7,9,35,10,2,5,24,39,14,16,4,9,22,6,13,11]","1971-02-02","building"
EOF

We insert the CSV file data.csv to the table myscale_categorical_search with the following command:

$ curl "$MYSCALE_CLUSTER_URL/?query=INSERT%20INTO%20myscale_categorical_search%20FORMAT%20CSV" \
    -H "X-ClickHouse-User: $MYSCALE_USERNAME" \
    -H "X-ClickHouse-Key: $MYSCALE_CLUSTER_PASSWORD" \
    --data-binary @data.csv

Note that the query that used for insertion is actually INSERT INTO myscale_categorical_search FORMAT CSV, but spaces need to be replaced with %20 in the URL.

In addition, it is important to note that the current default read timeout for the HTTP interface is 1 minute. When importing large files using this method, it is possible that the connection may be interrupted. Therefore, it is recommended to use other methods, such as the Python client, to import large files.

You can use compression to reduce network traffic when transmitting a large amount of data or for creating dumps that are immediately compressed. Here is an example of uploading compressed data:

# use gzip to compress data
$ gzip -c data.csv > data.gz
# upload the compressed data
$ curl "$MYSCALE_CLUSTER_URL/?query=INSERT%20INTO%20myscale_categorical_search%20FORMAT%20CSV" \
    -H "X-ClickHouse-User: $MYSCALE_USERNAME" \
    -H "X-ClickHouse-Key: $MYSCALE_CLUSTER_PASSWORD" \
    -H "Content-Encoding: gzip" \
    --data-binary @data.gz

Here is an example of receiving compressed data archive from the server:

$ curl -vsS "$MYSCALE_CLUSTER_URL/?enable_http_compression=1" \
    -H "X-ClickHouse-User: $MYSCALE_USERNAME" \
    -H "X-ClickHouse-Key: $MYSCALE_CLUSTER_PASSWORD" \
    -H "Accept-Encoding: gzip" \
    --output result.gz -d 'SELECT number FROM system.numbers LIMIT 3'
$ zcat result.gz
0
1
2

We create a MSTG vector index for column data of table myscale_categorical_search:

$ curl "$MYSCALE_CLUSTER_URL" \
    -H "X-ClickHouse-User: $MYSCALE_USERNAME" \
    -H "X-ClickHouse-Key: $MYSCALE_CLUSTER_PASSWORD" \
    -d "ALTER TABLE myscale_categorical_search ADD VECTOR INDEX v1 data TYPE MSTG"

For more information about vector index and vector search, please refer to Vector Search.

We search for the 10 nearest neighbors for vector [3.0,9,45,22,28,11,4,3,77,10,4,1,1,4,3,11,23, 0,0,0,26,49,6,7,5,3,3,1,11,50,8,9,11,7,15,21,12,17,21,25,121,12,4,7,4,7,4,41,28,2,0,1,10, 42,22,20,1,1,4,9,31,79,16,3,23,4,6,26,31,121,87,40,121,82,16,12,15,41,6,10,76,48,5,3,21, 42,41,50,5,17,18,64,86,54,17,6,43,62,56,84,116,108,38,26,58,63,20,87,105,37,2,2,121,121, 38,25,44,33,24,46,3,16,27,74,121,55,9,4] in table myscale_categorical_search:

$ curl "$MYSCALE_CLUSTER_URL" \
    -H "X-ClickHouse-User: $MYSCALE_USERNAME" \
    -H "X-ClickHouse-Key: $MYSCALE_CLUSTER_PASSWORD" \
    -d "SELECT id, date, label, distance(data,
       [3.0,9,45,22,28,11,4,3,77,10,4,1,1,4,3,11,23,0,
       0,0,26,49,6,7,5,3,3,1,11,50,8,9,11,7,15,21,12,17,21,25,121,12,4,7,4,7,4,
       41,28,2,0,1,10,42,22,20,1,1,4,9,31,79,16,3,23,4,6,26,31,121,87,40,121,82,
       16,12,15,41,6,10,76,48,5,3,21,42,41,50,5,17,18,64,86,54,17,6,43,62,56,84,
       116,108,38,26,58,63,20,87,105,37,2,2,121,121,38,25,44,33,24,46,3,16,27,74,
       121,55,9,4]) as dist FROM default.myscale_categorical_search ORDER BY dist LIMIT 10"
3	2024-08-11	animal      0
5	2025-04-02	building	211995
9	1971-02-02	building	214219
2	1975-10-07	animal	    247505
0	2030-09-26	person	    252941
1	1996-06-22	building	255835
7	1970-09-10	building	266691
4	1970-01-31	animal	    276685
8	2007-10-26	person	    284773
6	2007-06-29	animal	    298423
Last Updated: Thu Mar 14 2024 05:32:10 GMT+0000