elasticsearch 如何将elasticsearch结果合并到一个字段中,或如何解释在其中找到了哪些字段结果,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 如何将elasticsearch结果合并到一个字段中,或如何解释在其中找到了哪些字段结果,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 如何将elasticsearch结果合并到一个字段中,或如何解释在其中找到了哪些字段结果

elasticsearch 如何将elasticsearch结果合并到一个字段中,或如何解释在其中找到了哪些字段结果,elasticsearch,nest,elasticsearch,Nest,跟我来这一个 如果我有一个db的电影,我想搜索多个领域,并返回结果到一个单一的领域,我将如何做到这一点 让我举个例子 我的文档有一个标题和artists.name(数组)。我希望用户能够同时在标题和艺术家中搜索,以便结果在同一字段中。这将在“自动完成”搜索场景中实现,在该场景中,您可以在键入时获得结果 所以,如果用户键入“mike”,我希望能够搜索名为mike的演员(artists.name)和名为mike的标题。在这种情况下,您可能会在同一个自动完成结果集中返回“magic mike”和“mi

跟我来这一个

如果我有一个db的电影,我想搜索多个领域,并返回结果到一个单一的领域,我将如何做到这一点

让我举个例子

我的文档有一个标题和artists.name(数组)。我希望用户能够同时在标题和艺术家中搜索,以便结果在同一字段中。这将在“自动完成”搜索场景中实现,在该场景中,您可以在键入时获得结果

所以,如果用户键入“mike”,我希望能够搜索名为mike的演员(artists.name)和名为mike的标题。在这种情况下,您可能会在同一个自动完成结果集中返回“magic mike”和“mike meyers”。(imdb.com有此实现)


我知道如何搜索这两个字段,但如何将它们返回到一个字段中?我相信我必须对我的“热门作品”的来源有所了解——书名或艺术家名称。因此,这可能是这里更大的问题-我如何判断命中的字段来自哪个字段?

我认为没有任何直接的方法来确定查询匹配的字段。我可以想出一些“变通”方法,可以为您做到这一点——一种是使用,并对每个字段执行单独的查询。另一个是使用,它将返回在其中找到匹配项的字段

使用多重搜索的示例:

var response=client.MultiSearch(ms=>ms
.Search,您可以添加到查询中,但这将返回大量不相关的评分信息,您必须对这些信息进行解析。可能对您的需要来说太麻烦了


作为旁注-对于自动完成功能,如果可能的话,我真的会尝试利用,而不是上述解决方案。这些是预先计算的建议,是在您通过建立索引为文档创建索引时创建的,这将增加索引时间和索引大小,但结果将提供非常快速的建议。

谢谢greg。和往常一样非常有帮助。我也开始按照这些思路思考——但我的思路更古老了……我打算对每个查询执行一个单独的查询,然后以某种方式合并结果。我会考虑使用suggester——我的短语查询速度很快——25毫秒或更少,但如果更快的话,那就太好了。另外,根据您的建议评论-我不认为我会使用完成建议,而不是上面的建议,是吗?如果我要使用它,我仍然需要使用类似的技术来搜索多个位置,然后将它们推到一起,对吗?此外,我刚刚下载了最新的elasticsearch 1.2.1,因为它现在有可能适合我的情况的功能。Unf很重要的是,我无法让它工作-按照他们在该页面上的示例。我得到以下信息:“BroadcastShardOperationFailedException[[services][2];nested:ElasticsearchException[failed to execute suggest];nested:NullPointerException;”事实上,我建议使用完成建议作为替代。这可能需要你重新思考和重组你的索引和应用程序,但如果你想快速自动完成,这可能是值得研究的。再说一遍,以上内容可能足以让你决定什么对你的应用程序是最好的。事实上,我并不熟悉我还没有使用上下文提示器,它是相当新的,我还没有使用过它,所以很遗憾,我不能提供太多帮助。