ElasticsearchCRUD使用(十)【Elasticsearch类型与ElasticsearchCRUD的映射】
来源:互联网 发布:上海华讯网络上市了吗 编辑:程序博客网 时间:2024/06/08 16:22
本文介绍如何使用ElasticsearchCRUD来定义Elasticsearch中类型的映射。 可以使用ElasticsearchCRUD的属性来定义Elasticsearch中的Core Types定义。
映射属性
可以使用ElasticsearchCRUD中的属性定义映射定义。 支持大部分Elasticsearch核心类型定义。 下面是一个使用Elasticsearch映射定义的类的例子。
public class AmazingThisMapping{ public int Id { get; set; } [ElasticsearchInteger(Coerce=true)] public int NumberOf { get; set; } [ElasticsearchString(CopyTo = "data")] public string Name { get; set; } public string Description { get; set; } public string Data { get; set; } [ElasticsearchInteger] public short SmallAmount { get; set; } [ElasticsearchString(Boost = 1.4, Fields = typeof(FieldDataDefNotAnalyzed), Index = StringIndex.analyzed)] public string DescriptionBothAnayzedAndNotAnalyzed { get; set; } [ElasticsearchDouble(Boost = 2.0,Store=true)] public double Cost { get; set; } [ElasticsearchDate] public DateTime Timestamp { get; set; } [ElasticsearchDate] public DateTimeOffset TimestampWithOffset { get; set; }}
一旦已经定义了具有映射的类,可以使用context.CreateIndex
方法在Elasticsearch中创建它。
using (var context = new ElasticsearchContext(ConnectionString, new ElasticsearchSerializerConfiguration(ElasticsearchMappingResolver))){ context.TraceProvider = new ConsoleTraceProvider(); context.CreateIndex<AmazingThisMapping>();}
not_analyzed
,analyzed
字符串字段的示例
有时需要同时保存analyzed
和non-analyzed
的搜索请求的字符串。这是通过Elasticsearch中的字段属性实现的。 这可以在ElasticsearchCRUD中使用ElasticsearchString
属性中的Fields
属性定义。 此属性特性需要Type
。 然后,该类型定义所有必需属性为字段定义。
public class Whatever{ [ElasticsearchString(Boost = 1.4, Fields = typeof(FieldDataDefNotAnalyzed), Index = StringIndex.analyzed)] string DescriptionBothAnayzedAndNotAnalyzed { get; set; }}This class is used to define the field mappings in the fields property. This example has just one example, but you can define as many as required.public class FieldDataDefNotAnalyzed{ [ElasticsearchString(Index = StringIndex.not_analyzed)] public string Raw { get; set; }}
这将创建以下映射:
"descriptionbothanayzedandnotanalyzed": { "type": "string", "boost": 1.4, "fields": { "raw": { "type": "string", "index": "not_analyzed" } }}
copy_to定义
可以使用CopyTo属性或CopyToList属性定义copy_to字段映射。
public class Whatever{ [ElasticsearchString(CopyTo = "data")] public string Name { get; set; } public string Description { get; set; } public string Data { get; set; }}
然后可以在搜索查询中使用。 以下查询搜索数据字段以匹配World
字符串。
{ "query": { "bool": { "must": [ { "match" : { "data" : "World" } } ] } }}
要查看可能的类型和映射定义的完整列表以及每个属性属性的含义,请参阅Elasticsearch中的Core Types文档。 这些在ElasticsearchCRUD.ContextAddDeleteUpdate.CoreTypeAttributes
命名空间中的ElasticsearchCRUD
中定义。 然后,这些映射定义可用于ElasticsearchCRUD中的任何类型的文档结构。
0 0
- ElasticsearchCRUD使用(十)【Elasticsearch类型与ElasticsearchCRUD的映射】
- ElasticsearchCRUD使用(十二)【Elasticsearch的German分析器】
- ElasticsearchCRUD使用(十六)【Elasticsearch聚合】
- ElasticsearchCRUD使用(十七)【Elasticsearch搜索多个指标和类型】
- ElasticsearchCRUD使用(六)【EF和Elasticsearch的MVC应用程序】
- ElasticsearchCRUD使用(十三)【Elasticsearch谷歌地图搜索的MVC应用】
- ElasticsearchCRUD使用(十一)【Elasticsearch同义词分析器】
- ElasticsearchCRUD使用(三)【嵌套文档的MVC】
- ElasticsearchCRUD使用(一)【介绍】
- ElasticsearchCRUD使用(四)【使用EF从SQLServer到Elasticsearch的数据传输】
- ElasticsearchCRUD使用(八)【使用Elasticsearch和WebAPI导出CSV】
- ElasticsearchCRUD使用(五)【Elasticsearch中的子文档,父文档】
- ElasticsearchCRUD使用(七)【Elasticsearch中的实时重建索引】
- ElasticsearchCRUD使用(九)【Elasticsearch父子,孙子节点文件和路由】
- ElasticsearchCRUD使用(十八)【进行MVC搜索Elasticsearch高亮】
- ElasticsearchCRUD使用(十九)【索引热身】
- ElasticsearchCRUD使用(十四)【ElasticsearchCRUD搜索查询和过滤】
- ElasticsearchCRUD使用(十五)【批量插入数据】
- CentOS6.5 配置 jdk
- V4升级V5pdf,flash打印的问题
- 服务器分布式环境搭建【一】
- 关于webview加载网页出现打不开网页或者空白页面情况的处理
- Problem A: STL——邮票
- ElasticsearchCRUD使用(十)【Elasticsearch类型与ElasticsearchCRUD的映射】
- Myeclipse连接Mysql数据库时报错:Error while performing database login with the pro driver:unable
- [LeetCode]14. Longest Common Prefix
- swing与awt以及Adapte
- 发现vjudge用搜狗浏览器无法登陆
- Josephus环问题求解(Java实现)
- js闭包中this的指向问题及三种解决方法
- Problem B: STL——多重集的插入和删除
- LeetCode:492. Construct the Rectangle