按字母顺序索引关键字列表 VS 在 elasticsearch 中根本不排序?

Indexing lists of keywords in alphabetical order VS not sorting at all in elasticsearch?

我正在使用 elasticsearch 存储带有 standard analyzer 的关键字列表,如下所示:

{
   id:1,
   body_color:'silver,blue',
   feature:'wifi,gps'  
},
{
   id:2,
   body_color:'blue,red',
   window_color:'yellow,white',
   feature:'multi core,wifi'
}

是否按字母顺序对这些列表进行排序,例如)

{
   id:1,
   body_color:'blue,silver',
   feature:'gps,wifi'  
},
{
   id:2,
   body_color:'blue,red',
   window_color:'white,yellow',
   feature:'multi core,wifi'
}

需要更小的索引大小因为更标准和更少的变化?它有助于规范化标记吗?

首先,正如您所说,这些是关键字而不是文本。那么应该使用类型 keyword 而不是类型 text ,关键字不被分析。

您的文档应该如下所示:

{
   id:1,
   body_color:'silver,blue',
   feature:['wifi','gps']  
},
{
   id:2,
   body_color:'blue,red',
   window_color:['yellow','white'],
   feature:'multi core,wifi'
}

关于排序的问题。当 elasticsearch 分析一个字符串时,他正在应用以下内容:

  1. 字符过滤器
  2. 分词器
  3. 令牌过滤器

字符过滤器将删除您不想索引的字符,例如 HTML 标签。在此之后,标记器将应用于剩余的字符串,它将您的字符串划分为标记列表。最后一步,标记过滤器,将删除列表中的某些标记,例如停用词,然后每个标记都将添加到倒排索引中,这将使它们可搜索。

我不认为对您的关键字进行排序会提高索引效率。