3

我正在尝试使用基于属性的映射来设置我的映射

我需要设置路由,使其成为必需并设置为我正在索引的对象上的特定属性。

这可能吗?有没有人做到这一点?

4

2 回答 2

2

首先,您需要在创建索引时进行所需的路由,如下所示:

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

于 2016-09-16T22:31:01.900 回答
0

您可以使用IdProperty属性的ElasticType属性:

[ElasticType(Name = "mydocument", IdProperty = "docDate")]
public class MyDocument
{
    [ElasticProperty(Name = docDate)]
    public DateTime DocDate { get; set; }

...

这会根据_idelasticsearch 中的字段设置存储的值,该字段用于路由

于 2014-10-30T17:10:33.963 回答