我最近开始关注elasticsearch,我正在学习它能做什么,并决定如何在我的项目中使用它。
对于一个项目,我使用了couchdb(noSQL)数据库。客户端可以使用couchdb视图进行搜索。简单但功能有限。 我希望有弹性搜索以更丰富的方式打开数据。
搜索作曲家和音乐作品的标题现在由elasticsearch以惊人的快速'query_string'处理。它很模糊!
然而有一件事我没有用弹性搜索来完成,但我很确定它是可能的,我只是错过了它。
输入仪器名称时的自动完成功能。 例如: 我有两个文件(音乐作品),需要不同的乐器演奏它们:
{
title: 'Awesome Piece',
authors: [{
name: 'John Doe',
role: 'composer'
}, {
name: 'Shakespeare',
role: 'lyricist'
}],
instruments: [
'soprano',
'alto',
'tenor',
'bass',
'trumpet',
'trumpet',
'piano'
]
}
{
title: 'Not so Awesome Piece',
authors: [{
name: 'Another J. Doe',
role: 'composer'
}, {
name: 'Little John',
role: 'arranger'
}],
instruments: [
'trombone',
'organ'
]
}
要输入新的音乐作品,需要输入乐器名称字段。我希望这个优惠是自动完成的。
因此,如果用户输入't',我想要一个匹配't *'的所有乐器列表:['tenor', 'trumpet', 'trombone']
,如果他输入'tr',我需要:['trumpet', 'trombone']
最好的我发现的是一个带有聚合的查询,但它会搜索文档并将它们作为一个整体聚合,返回查询中找到的所有文档工具。
当然,我希望自动完成最终会模糊。
任何人都能指出我的方向吗? 提前谢谢!
(我正在运行elasticsearch 2.3,但我不介意升级!)