Elastic / Lucene对未分析的字段做了什么?它不必为该字段值创建倒排索引(我想象)。它只需要记录值?
我怀疑它仍然是一个只有一个术语的倒排索引。该术语的位置始终固定在场的开头和场的末端。这看起来准确吗?
答案 0 :(得分:1)
在ES 2.x中,在声明string
字段时,您有关于如何编制索引的three options。您可以使用
index: analyzed
,在这种情况下,字符串内容被分析并编入索引( - >分析的标记存储在倒排索引中)index: not_analyzed
,在这种情况下,字符串内容未经过分析,但仍被编入索引"按原样#34; ( - >确切的字符串在倒排索引中未加改变地存储)。此外,确切的值也存储在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中。