【发布时间】:2016-12-18 20:27:25
【问题描述】:
【问题讨论】:
标签: elasticsearch nest elasticsearch-net
【问题讨论】:
标签: elasticsearch nest elasticsearch-net
首先,您需要在创建索引时进行所需的路由,如下所示:
client.CreateIndex("my-index",
d => d
.Mappings(mapping => mapping
.Map<MyObject>(map => map
.RoutingField(routing => routing
.Required(true))
.AutoMap()
)
));
其次,需要在索引文档时添加路由值,如下所示:
var result = client.Index<MyObject>(
myObject,
selector => selector
.Id(myObject.ObjectId)/*to avoid "random" ids*/
.Routing(routingValue)); //or in your case, myObject.MySpecialProperty
最后,您需要在搜索时指定路由值。
client.Search<MyObject>(query => query.Query(q => q.MatchAll()).Routing(routingValue));
使用 NEST v2.4
【讨论】:
您可以使用ElasticType 属性的IdProperty 属性:
[ElasticType(Name = "mydocument", IdProperty = "docDate")]
public class MyDocument
{
[ElasticProperty(Name = docDate)]
public DateTime DocDate { get; set; }
...
这会根据 elasticsearch 中的 _id 字段设置存储的值,该字段用于 routing。
【讨论】: