使用嵌套和属性映射在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的一部分