使用嵌套和属性映射在ElasticSearch中设置路由

使用嵌套和属性映射在ElasticSearch中设置路由,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我正在尝试使用 我需要设置路由,使其成为必需的,并设置为我正在索引的对象上的特定属性 这可能吗?有人完成了吗?您可以使用ElasticType属性的IdProperty属性: [ElasticType(Name = "mydocument", IdProperty = "docDate")] public class MyDocument { [ElasticProperty(Name = docDate)] public DateTime DocDate { get; set;

我正在尝试使用

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


这可能吗?有人完成了吗?

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

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

...

这将根据elasticsearch中的
\u id
字段设置存储的值,该字段用于。

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

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.CreateIndex(“我的索引”,
d=>d
.Mappings(映射=>mapping
.Map(Map=>Map
.RoutingField(路由=>routing
.必填项(正确))
.AutoMap()
)
));
其次,在为文档编制索引时,需要添加路由值,如下所示:

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
var result=client.Index(
我的对象,
选择器=>选择器
.Id(myObject.ObjectId)/*以避免“随机”Id*/
.路由(路由值)//或者在您的情况下,myObject.MySpecialProperty
最后,在执行搜索时,需要指定路由值

client.Search<MyObject>(query => query.Query(q => q.MatchAll()).Routing(routingValue));
client.Search(query=>query.query(q=>q.MatchAll()).Routing(routingValue));

使用NEST v2.4

此解决方案不是NEST最新API的一部分