我正在使用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类型,但已映射为float:
"latLong": {
"properties": {
"lat": {
"type": "float"
},
"lon": {
"type": "float"
}
}
}
所以我想念什么,只是不确定什么。
有帮助吗?
谢谢
答案 0 :(得分:0)
该索引可能已经存在,并且字段映射无法更新。在创建索引调用的响应上检查.IsValid
,如果无效,请查看错误和原因。您可能需要删除索引并重新创建。
还请注意,Elasticsearch 6.x不允许在一个索引中进行多个类型映射,否则将失败。要么为不同类型创建单独的索引,或者,如果类型具有相同的字段结构和,而您希望以相同的方式对它们进行索引/分析,则可以考虑引入一个额外的鉴别字段。