定义复合索引时,例如
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数据中整个复合索引的东西吗?
答案 0 :(得分:1)
你发现了2个错误,我们会尽快修复。 ;)
首先,使用普通索引类型会导致'keyword'分析器不是'标准'分析器。
其次,超过2个非字符串列的复合不应导致字符串类型列,但如果支持,则不应生成相同类型的原始列。
我写过“if supported”,因为到目前为止,我们禁止在非字符串列上定义复合索引,因为我们不知道这将是什么。
我们当前的match
函数实现仅支持字符串文字,因此该函数不能用于查询复合索引。
你能解释一下你的用例吗?
也许在github上创建一个问题对于这种可能的增强是有意义的。
用于定义复合索引的列的顺序根本不重要,在字符串的情况下,分析两者的值并将结果术语插入/合并到目标字段。
感谢报道!