elasticsearch返回唯一匹配值

时间:2016-11-11 09:50:57

标签: elasticsearch

我最近开始关注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,但我不介意升级!)

0 个答案:

没有答案