вставить данные через Ellasandra Rest Api - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь выполнить вставку данных через 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

...