在elasticsearch嵌套中查询一个具有多个值的字段

zxlwwiss  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(689)

我用elasticsearch和nest组合了两个查询,第一个是对特定术语的全文搜索,第二个是过滤或查询另一个字段,它是文件路径,但应该是多个文件路径,路径可以是部分路径或完整路径,我可以查询一个文件路径,但我无法对多个文件路径进行查询,有什么建议吗?

Search<SearchResults>(s => s
                            .Query(q => q
                            .Match(m => m.Field(f => f.Description).Query("Search_term"))
                             && q
                            .Prefix(t => t.Field(f => f.FilePath).Value("file_Path"))
                            )
                            );
lndjwyie

lndjwyie1#

要搜索多个路径,可以在elasticsearch中使用bool query,然后使用should occurrent进行逻辑或搜索,因此代码应如下所示:

Search<SearchResults>(s => s
                            .Query(q => q.
                             Bool(b => b
                                .Should(
                                    bs => bs.Wildcard(p => p.FilePath, "*file_Pathfile_Path*"),
                                    bs => bs.Wildcard(p => p.FilePath, "*file_Pathfile_Path*"),
....
                                ))
                                && q.Match(m => m.Field(f => f.description).Query("Search_term")
                            )));

您还应该使用通配符查询来获取可能是部分路径或完整路径的路径的结果。有关更多信息,请查看下面有关wildquery和bool query的es官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.htmlhttps://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool-queries.htmlhttps://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html

相关问题