我正在学习NEST和弹性搜索,而且一些基础知识令我感到困惑。如果我使用Nest集成测试创建基本索引:
var client = ElasticsearchConfiguration.Client;
if (client.IndexExists(ElasticsearchConfiguration.DefaultIndex).Exists)
return;
var projects = NestTestData.Data;
var people = NestTestData.People;
client.CreateIndex(ElasticsearchConfiguration.DefaultIndex, c => c
.NumberOfReplicas(0)
.NumberOfShards(1)
.AddMapping<ElasticSearchProject>(m => m.MapFromAttributes())
.AddMapping<Person>(m => m.MapFromAttributes())
);
client.CreateIndex(ElasticsearchConfiguration.DefaultIndex + "_clone", c => c
.NumberOfReplicas(0)
.NumberOfShards(1)
.AddMapping<ElasticSearchProject>(m => m.MapFromAttributes())
.AddMapping<Person>(m => m.MapFromAttributes())
);
var bulkParameters = new SimpleBulkParameters() { Refresh = true };
client.IndexMany(projects, bulkParameters);
client.IndexMany(people, bulkParameters);
client.Refresh(new[] {ElasticsearchConfiguration.DefaultIndex, ElasticsearchConfiguration.DefaultIndex + "_clone"});
我不明白此操作后ElasticClient的状态。
1)为什么此操作后ElasticClient仍然有效= False。那么有效意味着什么?
2)CreateIndex函数返回一个IIndicesOperationResponse,即使我知道索引已经创建,他的状态属性OK也设置为false。什么意思好吗?
答案 0 :(得分:1)
客户端上的.IsValid构造在旧版本中用作一次性ping,以查看客户端是否可以连接到配置的主机。这一点早已被删除,因为它引起了更多的混乱,并没有真正提供任何东西。
Elasticsearch 1.0标准化并从响应中删除了所有OK
属性。