关于综合指数

时间:2014-07-28 22:57:30

标签: crate

定义复合索引时,例如

create table temptable (id integer, id2 integer, name string, INDEX ci using plain(id2, id));

id和id2使用整数在elasticsearch中编入索引, 但我从ES的_mapping中看到的是:

      "ci" : {
        "type" : "string",
        "analyzer" : "standard"
      },

将id和id2都复制到ci类型" string&#34 ;.

你能解释一下这个(比如保留的顺序)以及crate数据中整个复合索引的东西吗?

1 个答案:

答案 0 :(得分:1)

你发现了2个错误,我们会尽快修复。 ;)

首先,使用普通索引类型会导致'keyword'分析器不是'标准'分析器。

其次,超过2个非字符串列的复合不应导致字符串类型列,但如果支持,则不应生成相同类型的原始列。 我写过“if supported”,因为到目前为止,我们禁止在非字符串列上定义复合索引,因为我们不知道这将是什么。
我们当前的match函数实现仅支持字符串文字,因此该函数不能用于查询复合索引。
你能解释一下你的用例吗? 也许在github上创建一个问题对于这种可能的增强是有意义的。

用于定义复合索引的列的顺序根本不重要,在字符串的情况下,分析两者的值并将结果术语插入/合并到目标字段。

感谢报道!