Проверка наличия документа в индексе с помощью NEST

Я переиндексирую свой индекс, но сталкиваюсь с проблемой всякий раз, когда пытаюсь удалить несуществующий документ, поэтому мне нужно проверить, существует ли уже этот документ.

Этот подход просто объясняется в документах по эластичному поиску.

Я нашел вопрос с интересным кодом , что я уже пробовал

var docExists = client.DocumentExists<object>(d => d
    .Index(indexname)
    .Id(myId)
    .Type("Abcdef"));

Но компилятор выдает ошибку

Невозможно преобразовать лямбда-выражение в тип «Nest.DocumentPath‹object›», поскольку это не тип делегата

Я предполагаю, что моя ошибка возникает из-за того, что вопрос относится к NEST 1.x, а я использую NEST 2.x.

Я знаю, что могу сделать простой запрос, но я хочу знать, есть ли прямой путь, такой как ES документ-существует.

Спасибо


person I.G. Pascual    schedule 01.06.2016    source источник
comment
Какую версию Nest вы используете?   -  person bittusarkar    schedule 01.06.2016
comment
@bittusarkar Elasticsearch 2.0.0, Nest 2.0.2   -  person I.G. Pascual    schedule 01.06.2016


Ответы (2)


Подпись DocumentExists немного изменилась в NEST 2.x.

Прямо сейчас это выглядит так:

public IExistsResponse DocumentExists<T>(DocumentPath<T> document, Func<DocumentExistsDescriptor<T>, IDocumentExistsRequest> selector = null) where T : class

Ваш пример может быть выражен следующим образом

client.DocumentExists<Document>(myId, d => d
    .Index(indexname)
    .Type("Abcdef"));

Если вас интересует DocumentPath<T>, прочитайте эта большая коллекция документов NEST.

person Rob    schedule 01.06.2016
comment
Спасибо! Я остановился на этом решении, хотя client.DocumentExists(new DocumentExistsRequest(indexName, type.Name, myId)), так как не мог использовать общий метод - person I.G. Pascual; 02.06.2016

Я закончил тем, что использовал

client.DocumentExists(new DocumentExistsRequest(indexName, type.Name, myId))

так как я не мог использовать общий метод DocumentExists<T>(..)

person I.G. Pascual    schedule 31.01.2017