ElasticsearchCRUD使用(三)【嵌套文档的MVC】

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

具有1对n个实体的模型

用于与Elasticsearch进行交互的模型具有1到n的关系。 SkillWithListOfDetails类具有SkillDetail对象的列表。 这些类将作为嵌套对象使用SkillDetail列表保存到Elasticsearch。 这个子对象可以像父对象SkillWithListOfDetails中的任何其他属性一样进行搜索。

SkillDetail用作子类。 父外键不需要Id,因为当存储到Elasticsearch时,该子被NESTED。

控制器创建,使用ElasticsearchCRUD创建

创建Elasticsearch功能使用EleashseachCRUD实现。 要使用NuGet下载ElasticsearchCRUD:
ElasticsearchCRUD使用(三)【嵌套文档的MVC】
这将使用默认的IElasticSearchMappingResolver来保存索引为多元状态,将类型设置为不带命名空间的类名称,并将所有属性保存为小写。

一个id是必需的,不是自动生成的。 ElasticseachCRUD不支持自动生成的ID。 通常,Elasticsearch不是主要的持久性,而是将已有ID的文档保存到搜索引擎中的实体。 如果需要创建Id,您可以自动生成一个新的随机Guid。

然后,提供者可以在SearchController中使用。 action方法接受模型和包含SkillDetail实体的子列表的字符串。 此createSKillDetailsList字符串属性是使用javascript和jTable从视图创建的json字符串。

创建视图是一个简单的MVC razor 局部视图。 该视图使用SkillWithListOfDetails模型,并向MVC控制器动作发送一个简单的表单。 输入按钮调用一个javascript函数,它从jTable创建表格中获取所有SkillDetail行,并将其添加到输入隐藏项。 然后它执行submti()

SearchCreate是一个MVC PartialView。 这在Index View中使用。 Index View包含所有的JavaScript实现。 这应该在单独的js文件中实现并捆绑。 JavaScript代码使用3个js库,moment.js和jTable和jQuery(带UI)。

现在可以创建具有嵌套对象数组的新的Elastissearch文档。视图看起来像这样:
ElasticsearchCRUD使用(三)【嵌套文档的MVC】

Elasticsearch 索引和映射

当您检查Elasticsearch搜索引擎中的映射时,您将找到具有嵌套数组子项的新文档。
http://localhost:9200//_mapping

使用查询字符串搜索进行搜索

搜索是使用包含查询字符串搜索的搜索类构建的。 此查询使用可用于自动完成的通配符。 这可以通过使用不同的查询类型进行优化。

该term在每个结尾处被分成具有*通配符的不同搜索词。 搜索也搜索嵌套数组。

然后在SearchController中使用搜索。 这将使用直接从autocomplete 控件使用的Json数组返回集合。

查看jTable的autocomplete
autocomplete 控件使用此Json结果,并允许用户选择单个文档。 当选择一个文档时,它将显示在更新控件中。

更新控件显示父对象和子对象。类Skilldetails的子列表显示在jTable JavaScript组件中。
ElasticsearchCRUD使用(三)【嵌套文档的MVC】

moment.js的DateTime

moment.js库用于以可读格式显示Json DateTime项。 然后在jTable和输入表单中使用这些项。

这个包可以使用NuGet(Moment.js)下载。 使用方法如下:

使用ElasticsearchCRUD进行更新

更新方法从视图接收数据,并更新所有更新的时间戳。 类SkillDetail的子列表被添加到实体,然后在Elasticsearch中更新。

delete方法使用_id字段删除文档。

ElasticsearchCRUD进行删除

结论

使用ElasticsearchCRUD,可以轻松添加,更新,删除1到n个关系的文档。 子元素嵌套在父文档中。 支持集合或对象数组以及简单类型集合/数组。 使用Elasticsearch与ElasticsearchCRUD,您可以创建复杂的搜索查询。

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

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

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

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