ElasticsearchCRUD使用(十七)【Elasticsearch搜索多个指标和类型】

释放双眼,带上耳机,听听看~!

本文介绍如何使用ElasticsearchCRUD在多个索引和类型的Elasticsearch中进行搜索。 Elasticsearch提供了一个指数过滤器,一个类型过滤器和一个指数查询,可以在使用多个索引和类型时使用。 汇总搜索和计数请求也可以使用多个指数和类型执行。

该示例在单个索引中使用父,子,子孙映射,使用路由的父_Id。 这确保了孙子文档和父文档被保存到同一个分片。 创建映射后,将在批量请求中添加3个文档。 结果索引在league索引中有3种类型映射。

在单个索引中搜索n个类型

要搜索包含多个类型的单个索引,需要创建一个新的ElasticsearchMapping。 这将对象类型映射到所需的索引。

然后将其添加到用于搜索的ElasticsearchContext中

现在使用对象类型的搜索将搜索leagues索引中的任何文档类型。 使用路由,以便我们搜索正确的分片。

搜索所有指标

还可以搜索Elasticsearch中的所有指标和所有类型。 为此,可以使用GlobalElasticsearchMapping实用程序类。这被添加到对象类型的新上下文中。

这可以用于计算服务器上的所有文档。

或者可以使用所有指标和类型进行搜索。

使用来自全局搜索的数据

可以使用GetSourceFromJToken方法来评估多重搜索的结果。
命中中的每个对象都作为JToken返回,因为返回的类型被定义为一个对象。hit.TypeInIndex可以用来找出它是什么样的文档。 这可以解析成一个类。

使用指标过滤器和类型过滤器搜索n个类型

搜索也可以使用IndicesFilter和TypeFilter过滤或过滤掉不同的类型。 以下代码片段过滤器用于team类型,player类型使用OrFilter,并使用NoMatchFilter属性删除leaguecup类型。 如果设置了NoMatchFilterNone,则所有未定义的类型都不会包含在结果中。

搜索可以发送到Elasticsearch如下:

这是以正确的Json作为HTTP Post请求消息体发送到Elasticsearch。

目前无法使用ElasticsearchCRUD在单个搜索请求中搜索n-indices。 这可能会在以后的版本中添加。 可以使用Indices过滤器代替。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索