Я пытаюсь выполнить вставку данных через API REST на elassandra, но я всегда получаю автоматически сгенерированное значение _id в мой столбец PK.
Я знаю, что для elassandra _id должен быть PK, но я не думаю, что мне нужно создать новый столбец с именем _id, чтобы эта штука работала.
Это путь, которым я следовал:
Сначала я создал таблицу на стороне c *:
CREATE TABLE euc.test_es1( text1 text PRIMARY KEY , text2 text ) ;
Перед заполнением таблицы я создал индекс с помощью REST (с помощью {"Discover": ". *"})
curl -XPUT -k -u user:pass -H 'Content-Type: application/json' "https://myserver/test_es1" -d'{"settings":{"index.keyspace":"euc"}, "mappings":{ "test_es1" : { "discover":".*"}}}'
Имея этот хороший ответ:
{"acknowledged":true,"shards_acknowledged":true,"index":"test_es1"}
Проверено создание индекса на стороне c *:
dev@cqlsh:euc> DESC INDEX euc.elastic_test_es1_idx
CREATE CUSTOM INDEX elastic_test_es1_idx ON euc.test_es1 () USING 'org.elassandra.index.ExtendedElasticSecondaryIndex';
После этого я заполнил таблицу 4 строками:
INSERT INTO euc.test_es1( text1, text2 ) VALUES ( 'one 1', '1 1 1 adfafsdf sdfs');
INSERT INTO euc.test_es1( text1, text2 ) VALUES ( 'two 2', '2 2 2 adfafsdf sdfs');
INSERT INTO euc.test_es1( text1, text2 ) VALUES ( 'three 3', '3 3 3 adfafsdf sdfs');
INSERT INTO euc.test_es1( text1, text2 ) VALUES ( 'four 4', '4 4 4 adfafsdf sdfs');
Теперь вот сложная часть (или часть, где я делаю что-то не так):
Я делаю запрос REST POST для вставки новой строки через API REST с curl:
curl -k -u user:pass -XPOST 'https://myserver/euc/test_es1/?pretty' -H 'Content-Type: application/json' -d'{"text1": "five 5", "text2":"5 5 5 hello from curl!"}'
dev@cqlsh:euc> SELECT * FROM test_es1 ;
text1 | text2
----------------------+------------------------
GPQlwWoBlTryRlTvRF6K | 5 5 5 hello from curl!
one 1 | 1 1 1 adfafsdf sdfs
three 3 | 3 3 3 adfafsdf sdfs
two 2 | 2 2 2 adfafsdf sdfs
four 4 | 4 4 4 adfafsdf sdfs
(5 rows)
Как видите, запрос вставлен: «GPQlwWoBlTryRlTvRF6K» вместо «пять 5»
Что я делаю не так?
Я подозреваю, что функция обнаружения связана с этой проблемой:
https://linux.m2osw.com/elassandra-and-discover-feature-which-cant-be-overwritten