elasticsearch - 如何让关键字映射在 NEST 中工作?
问题描述
我在 NEST v6.3.1,ElasticSearch v6.4.2
我无法让我的字段被索引为关键字。
我已经尝试了这两个属性:
[Keyword]
public string Suburb { get; set; }
流利的:
client.CreateIndex(indexName, i => i
.Mappings(ms => ms
.Map<Listing>(m => m
.Properties(ps => ps
.Keyword(k => k
.Name(n => n.Suburb)))
.AutoMap())
.Map<Agent>(m => m
.AutoMap())
.Map<BuildingDetails>(m => m
.AutoMap())
.Map<LandDetails>(m => m
.AutoMap())
)
);
两者都导致相同的事情:
{
"listings": {
"mappings": {
"listing": {
"properties": {
"suburb": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
例如与我在这里看到的不匹配: https ://www.elastic.co/guide/en/elasticsearch/client/net-api/current/attribute-mapping.html
当我尝试使用[GeoPoint]
. 应该是 geopoint 类型,但它映射到浮点数:
"latLong": {
"properties": {
"lat": {
"type": "float"
},
"lon": {
"type": "float"
}
}
}
所以我错过了一些东西,只是不确定是什么。
有什么帮助吗?
谢谢
解决方案
索引可能已经存在,并且无法更新字段映射。检查.IsValid
create index 调用的响应,如果无效,请查看错误和原因。您可能需要删除索引并重新创建。
另请注意,在 Elasticsearch 6.x 中不允许在一个索引中使用多个类型映射,并且会失败。为不同类型创建单独的索引,或者,如果类型具有相同的字段结构并且您希望以相同的方式索引/分析它们,您可以考虑引入额外的鉴别器字段。
推荐阅读
- javascript - 为什么切换在JS中只发生一次
- django - Django:错误:无法安装 -r requirements.txt
- asp.net - ASP.NET WebForms - VB.NET 和 SignalR
- java - * 出了什么问题:无法从 '15.0.1' 确定 java 版本
- sql-server - 错误 SQL71501:验证存储过程中的元素时出错
- html - bootstrap - 如何添加边距并使这些卡片水平显示
- python - 如何更改编辑行的文本并添加和减去它?
- excel - 寻找一种使用可变范围自动填充的方法
- mercurial - 将命名分支与默认 Mercurial 分支合并是否正确?
- python - Python - 程序不会识别变量中的值