我使用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'
}
需要更小的索引尺寸,因为标准越多,变化越小?它是否有助于规范化令牌?
答案 0 :(得分:1)
首先,正如您所说,这些是关键词而不是文本。然后应该使用类型keyword
而不是类型文本,不分析关键字。
您的文档应如下所示:
{
id:1,
body_color:'silver,blue',
feature:['wifi','gps']
},
{
id:2,
body_color:'blue,red',
window_color:['yellow','white'],
feature:'multi core,wifi'
}
关于排序的问题。当elasticsearch分析字符串时,他正在应用以下内容:
字符过滤器将删除您不想像HTML标记一样索引的字符。在此之后,tokeniser将应用于剩余的字符串,它将您的字符串分成一个标记列表。最后一步,令牌过滤器,将删除列表中的某些标记,例如停止单词,然后每个标记将被添加到倒排索引,这将使它们可搜索。
我不相信对关键字进行排序会提高索引的效率。