如何在couchbase的单个存储桶中存储不同类型的数据

如何在couchbase的单个存储桶中存储不同类型的数据,couchbase,Couchbase,我想在Couchbase的同一个存储桶中存储不同类型的数据,谷歌搜索了它的suggest doc_type和type参数,但我不知道如何在我的数据中实现它,我尝试了下面的代码,但我不知道如何做到这一点 我没有看到任何例子,任何帮助都将不胜感激 JsonObject doc = JsonObject.fromJson(consumerRecord.value().toString()); String id=consumerRecord.key().toString();

我想在Couchbase的同一个存储桶中存储不同类型的数据,谷歌搜索了它的suggest doc_type和type参数,但我不知道如何在我的数据中实现它,我尝试了下面的代码,但我不知道如何做到这一点

我没有看到任何例子,任何帮助都将不胜感激

JsonObject doc = JsonObject.fromJson(consumerRecord.value().toString());
             String id=consumerRecord.key().toString();
             bucket.upsert(JsonDocument.create(id, doc));

Couchbase存储桶存储任何类型的文档。你不必做任何特别的事。只要它是有效的JSON,就可以存储在Couchbase bucket中

现在,您可能需要某种方法来区分不同类型的文档(例如,用于查询目的)。因此,您可以将“type”字段(或docType或任何您想要的)作为一种“marker”值。您可以在中看到这方面的示例。例如,查看航空公司10航线10000文档:

airline_10
{
  "callsign": "MILE-AIR",
  "country": "United States",
  "iata": "Q5",
  "icao": "MLA",
  "id": 10,
  "name": "40-Mile Air",
  "type": "airline"
}

route_10000
{
  "airline": "AF",
  "airlineid": "airline_137",
  "destinationairport": "MRS",
  "distance": 2881.617376098415,
  "equipment": "320",
  "id": 10000,
  "schedule": [ ... ],
  "sourceairport": "TLV",
  "stops": 0,
  "type": "route"
}
请注意,其中一个类型为“airline”,另一个类型为“route”。查找路线的查询示例:

SELECT t.*
FROM `travel-sample` t
WHERE t.type = 'route'
LIMIT 10

这是区分文档的一种方法。还请注意,键是按语义构造的,因此它们也可以使用。这两项都不是必需的,所以它实际上取决于您计划如何访问文档。

我从您的问题中删除了
spring kafka
标记,因为kafka实际上一点都没有。请小心选择问题的标签。@ArtemBilan实际上使用kafkalistener和consumer record将Kafka中的数据写入couchbaseOK。但这个问题听起来仍然与ApacheKafka的Spring无关。即使您使用卡夫卡,也不意味着您需要包括
spring-Kafka
。真的看不出和那个项目有什么关系。抱歉,如果我遗漏了您上下文中的某些内容。无论您说什么都是正确的,但我的问题是我需要将该类型参数放在json或其预定义值中??对于Couchbase,“Type”只是另一个字段,没有什么特别的。存储文档时,您可以选择存储所需的任何字段(例如firstName、lastName、type、phoneNumber等)。没有可遵循的模式,Couchbase不会强制您创建类型字段。如果您想要一个,您必须将其与其他数据一起添加。请注意,Couchbase还支持存储任意项,如序列化Java或Avro。这是通过转码器接口完成的。JSON为您提供了更多处理数据的能力,但您可以处理元数据,即使它不是JSON。