我正在尝试通过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