Elastic / Lucene对未分析的字段做了什么?

时间:2017-05-04 20:32:33

标签: elasticsearch lucene inverted-index

Elastic / Lucene对未分析的字段做了什么?它不必为该字段值创建倒排索引(我想象)。它只需要记录值?

我怀疑它仍然是一个只有一个术语的倒排索引。该术语的位置始终固定在场的开头和场的末端。这看起来准确吗?

1 个答案:

答案 0 :(得分:1)

在ES 2.x中,在声明string字段时,您有关于如何编制索引的three options。您可以使用

声明该字段
  1. index: analyzed,在这种情况下,字符串内容被分析并编入索引( - >分析的标记存储在倒排索引中)
  2. index: not_analyzed,在这种情况下,字符串内容未经过分析,但仍被编入索引"按原样#34; ( - >确切的字符串在倒排索引中未加改变地存储)。此外,确切的值也存储在doc values index
  3. index: no,在这种情况下,字符串内容未经过分析,根本没有编入索引(因此无法搜索)
  4. 在ES 5.x中,您现在有两种不同的字段类型,即:

    • textindex: analyzed过去相同(上述案例1)
    • keyword与以前的index: not_analyzed相同(上述案例2)

    此外,这两个字段现在仍然接受index参数,但只能使用值truefalse。所以基本上,你现在有四种可能性,但只有三种可能有意义:

    1. text + index: true,这是您想要分析字符串并将其编入索引时的正常情况(与案例1相同)
    2. text + index: false,因为没有理由分析字符串而不是将其编入索引,所以没有任何意义
    3. keyword + index: true,这是您不想分析字符串但仍按原样索引值的情况(与案例2相同)
    4. keyword + index: false,这时您不想分析字符串而不对其进行索引(与案例3相同)
    5. 对于案例3和4,默认情况下,该值也存储在doc values index中。