Elastic/Lucene 对未分析的字段有何作用?
What does Elastic/Lucene do with a field that is not analyzed?
Elastic/Lucene 对未分析的字段有何作用?它不必为该字段值创建倒排索引或位置(我想)。只需要记录值?
我怀疑它仍然是一个只有一个词项的倒排索引。术语的位置将始终锚定在字段的开头和结尾。这看起来准确吗?
在 ES 2.x 中,当声明一个 string
字段时,您有 three options 关于它是如何被索引的。您可以使用
声明该字段
index: analyzed
,在这种情况下,字符串内容被分析和索引(-> 分析的标记存储在倒排索引中)
index: not_analyzed
,在这种情况下,字符串内容未被分析但仍被索引 "as is"(-> 确切的字符串未更改地存储在倒排索引中)。此外,确切的值也存储在 doc values index
index: no
,在这种情况下,字符串内容未被分析且根本未被索引(因此不可搜索)
在 ES 5.x 中,您现在有两种不同的字段类型,即:
text
与以前的 index: analyzed
相同(上述情况 1)
keyword
与以前的 index: not_analyzed
相同(上述情况 2)
此外,这两个字段现在仍然接受 index
参数,但只能接受值 true
或 false
。所以基本上,你现在有四种可能性,但只有三种真正有意义:
text
+ index: true
,这是您要分析字符串并对其编制索引时的正常情况(与情况 1 相同)
text
+ index: false
,这实际上没有意义,因为没有理由分析字符串而不对其进行索引
keyword
+ index: true
,这是当您不想分析字符串但仍按原样索引值时(与情况 2 相同)
keyword
+ index: false
,这是当你不想分析你的字符串也不索引它的时候(与情况 3 相同)
对于情况3和4,默认情况下该值也存储在doc values index中。
Elastic/Lucene 对未分析的字段有何作用?它不必为该字段值创建倒排索引或位置(我想)。只需要记录值?
我怀疑它仍然是一个只有一个词项的倒排索引。术语的位置将始终锚定在字段的开头和结尾。这看起来准确吗?
在 ES 2.x 中,当声明一个 string
字段时,您有 three options 关于它是如何被索引的。您可以使用
index: analyzed
,在这种情况下,字符串内容被分析和索引(-> 分析的标记存储在倒排索引中)index: not_analyzed
,在这种情况下,字符串内容未被分析但仍被索引 "as is"(-> 确切的字符串未更改地存储在倒排索引中)。此外,确切的值也存储在 doc values indexindex: no
,在这种情况下,字符串内容未被分析且根本未被索引(因此不可搜索)
在 ES 5.x 中,您现在有两种不同的字段类型,即:
text
与以前的index: analyzed
相同(上述情况 1)keyword
与以前的index: not_analyzed
相同(上述情况 2)
此外,这两个字段现在仍然接受 index
参数,但只能接受值 true
或 false
。所以基本上,你现在有四种可能性,但只有三种真正有意义:
text
+index: true
,这是您要分析字符串并对其编制索引时的正常情况(与情况 1 相同)text
+index: false
,这实际上没有意义,因为没有理由分析字符串而不对其进行索引keyword
+index: true
,这是当您不想分析字符串但仍按原样索引值时(与情况 2 相同)keyword
+index: false
,这是当你不想分析你的字符串也不索引它的时候(与情况 3 相同)
对于情况3和4,默认情况下该值也存储在doc values index中。