Определяя операции с индексами для BulkDescriptor
, вы явно устанавливаете индекс для использования для каждой операции
foreach (var element in elements)
bulkIndexer.Index<T>(i => i
.Document(element)
.Id(element.Id)
.Index(indexName));
, где indexName
равно "indexed_elements"
.Вот почему все документы индексируются в этом индексе, и вы не видите ни одного в "TestIndex"
.
Bulk API позволяет определять несколько операций, которые могут включать в себя индексирование документов в разные индексы.Когда индекс указывается непосредственно для операции, это будет используемый индекс. Если все операции с индексами при вызове Bulk API должны выполняться с одним и тем же индексом, вы можете опустить индекс для каждой операции и вместо этого указать индекс, который будет использоваться при вызове Bulk API напрямую
var defaultIndex = "default_index";
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var settings = new ConnectionSettings(pool)
.DefaultIndex(defaultIndex);
var client = new ElasticClient(settings);
var people = new []
{
new Person { Id = 1, Name = "Paul" },
new Person { Id = 2, Name = "John" },
new Person { Id = 3, Name = "George" },
new Person { Id = 4, Name = "Ringo" },
};
var bulkResponse = client.Bulk(b => b
.Index("people")
.IndexMany(people)
);
, который отправляет следующий запрос
POST http://localhost:9200/people/_bulk
{"index":{"_id":"1","_type":"person"}}
{"id":1,"name":"Paul"}
{"index":{"_id":"2","_type":"person"}}
{"id":2,"name":"John"}
{"index":{"_id":"3","_type":"person"}}
{"id":3,"name":"George"}
{"index":{"_id":"4","_type":"person"}}
{"id":4,"name":"Ringo"}
Обратите внимание, что URI равен /people/bulk
и что каждый объект JSON, представляющий операцию, не содержит "_index"
.
ЕслиВы опускаете. Index()
при вызове Bulk API, он будет использовать DefaultIndex
, настроенный для ConnectionSettings
:
var bulkResponse = client.Bulk(b => b
.IndexMany(people)
);
, что дает
POST http://localhost:9200/_bulk
{"index":{"_id":"1","_index":"default_index","_type":"person"}}
{"id":1,"name":"Paul"}
{"index":{"_id":"2","_index":"default_index","_type":"person"}}
{"id":2,"name":"John"}
{"index":{"_id":"3","_index":"default_index","_type":"person"}}
{"id":3,"name":"George"}
{"index":{"_id":"4","_index":"default_index","_type":"person"}}
{"id":4,"name":"Ringo"}
Вы также можете указатьиндекс по умолчанию для использования для данного типа POCO на ConnectionSettings
с DefaultMappingFor<T>()
, где T
- ваш тип POCO.