通过ellasandra rest api插入数据

时间:2019-05-17 10:18:25

标签: elasticsearch curl cassandra elassandra

我正在尝试通过elassandra上的REST api插入数据,但是我总是在PK列中获得_id自动生成的值。 我知道对于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请求以通过带有curl的REST api插入新行:

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”,而不是“五个” 我在做什么错了?

我怀疑发现功能与以下问题有关: https://linux.m2osw.com/elassandra-and-discover-feature-which-cant-be-overwritten

0 个答案:

没有答案