首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Elassandra编制Cassandra索引

用Elassandra编制Cassandra索引
EN

Stack Overflow用户
提问于 2019-02-07 19:27:41
回答 1查看 1.4K关注 0票数 2

我试图在本地使用Elassandra作为独立实例。使用bin/cqlsh,我创建了一个键空间,并向其中添加了一个测试表。我想在这个表上创建一个索引来运行elasticsearch查询,但是我不知道如何去做。我找到了这一信息,但这只是一个例子,没有真正了解这些选项或它们的含义。有人能指出我在我的桌子上索引的正确方向吗?我也尝试过查看ElasticSearch文档,但没有取得任何进展。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-08 15:33:51

是的,我承认,Elassandra文档远远不是完美的,对于新来的人来说也很难。

让我们创建一个键空间和表,并插入一些行:

代码语言:javascript
复制
CREATE KEYSPACE ks WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 1};
CREATE TABLE ks.t (id int PRIMARY KEY, name text);
INSERT INTO ks.t (id, name) VALUES (1, 'foo');
INSERT INTO ks.t (id, name) VALUES (2, 'bar');

NetworkTopologyStrategy是强制性的,不支持SimpleStrategy

将所有cql类型映射到ES类型可能很无聊,因此有一个生成映射的discover选项:

代码语言:javascript
复制
curl -XPUT -H 'Content-Type: application/json' 'http://localhost:9200/myindex' -d '{
    "settings": { "keyspace":"ks" },
    "mappings": {
        "t" : {
            "discover":".*"
        }
    }
}'

这将创建一个名为myindex的索引,其类型为t ( cassandra表)。

键空间的名称必须在settings.keyspace中指定(因为索引名称和键空间名称是不同的)。

discover字段包含正则表达式。匹配此regex的每个cassandra列都将自动进行索引,并进行类型推断。

让我们看一下生成的映射:

代码语言:javascript
复制
{
  "myindex": {
    ...
    "mappings": {
      "t": {
        "properties": {
          "id": {
            "type": "integer",
            "cql_collection": "singleton",
            "cql_partition_key": true,
            "cql_primary_key_order": 0
          },
          "name": {
            "type": "keyword",
            "cql_collection": "singleton"
          }
        }
      }
    },
 ...
}

这里有很多特殊的cql_*选项。

对于cql_collectionsingleton意味着索引字段由cassandra标量列支持--既不是列表也不是set。这是强制性的,因为elasticsearch字段是多值的。

cql_partition_keycql_primary_key_order告诉索引要使用哪个列来创建_id字段。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54580854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档