我已将数据集导入Couchbase,如下所示:
{
"CLUSTER": "M1M",
"CLUSTER_NAME": "MARTIN MARIETTA",
"PRIMARY": "",
"SET_NUM": "10000163",
SHORTENED_NAME": "MARTIN MARIETTA MATERIALS",
"TYPE": "SET",
"_class": "com.company.aad.xref.model.ClusterCodeXref"
}
我必须提供密钥生成策略,然后我制定了我最终希望索引的策略%SET_NUM%::%TYPE%
。所以我有几个问题:
密钥生成是否会自动使用这两个元素创建一个名为ID的字段,还是需要在我的CSV数据集中创建一个ID列?
如何从这两个字段中创建索引?我理解如何将CREATE INDEX
命令与复合字段一起使用,但该索引是否会像%SET_NUM%::%TYPE%
生成的密钥一样?我需要它们是相同的,中间是::
。
我希望我的问题很明确!非常感谢任何帮助。
答案 0 :(得分:0)
在Couchbase中,文档的ID /密钥实际上并不在文档本身中。如果您使用--generate-key
模板,您的文档将类似于:
key = "10000163::SET"
{
"CLUSTER": "M1M",
"CLUSTER_NAME": "MARTIN MARIETTA",
"PRIMARY": "",
"SET_NUM": "10000163",
SHORTENED_NAME": "MARTIN MARIETTA MATERIALS",
"TYPE": "SET",
"_class": "com.company.aad.xref.model.ClusterCodeXref"
}
Couchbase中没有指定的“id”字段。你当然可以创建一个id字段,但它就像任何其他字段一样。
对于索引,它取决于您要运行的查询类型。你可以提到CREATE INDEX idx_setnumandtype ON bucketname (SET_NUM, TYPE)
。对于像SELECT b.* FROM bucketname WHERE SET_NUM = 'foo' AND TYPE = 'bar';
但是,如果您知道这两个值并且只需要查找单个文档,则无需创建索引或使用N1QL。您只需执行键/值GET操作即可。例如,在Java中:bucket.get("10000163::SET")