2016-12-30 2 views
1

Например у меня есть таблица:как удалить все документы по предиката с помощью НЕСТ

| Col1  |  Col2 | 
|:-----------|------------:| 
|  1  |   one | 
|  1  |   one | 
|  1  |   one | 
|  1  |   one | 
|  2  |   two | 
|  1  |   one | 

И я хочу, чтобы удалить все документы, где Col1 == 1 и получить таблицу:

| Col1  |  Col2 | 
|:-----------|------------:| 
|  2  |   two | 

Я пытаюсь код но он работает неправильно.

ElasticClient.DeleteByQuery<ElasticContent>(del => del 
      .Index(ContentIndexName) 
      .Query(q => q 
      .Bool(b => b 
       .Must(m => m 
       .Term(t => t 
        .Field(f => f.Col1) 
        .Value("1")))))); 

Как удалить группу документов по конкретному запросу?

+1

Можете ли вы определить, что «не работает должным образом»? Документы не удаляются? Какую версию ES вы используете? – Val

+0

@Val, да, документы не удаляются. Я использую ES версию 5.1.1, NEST 5.0.0. –

+0

Выполняет ли сериализованный запрос как ожидаемый, например. соответствуют ли имена полей в запросе именам полей в Elasticsearch? Вам нужно дождаться завершения запроса по запросу ('.WaitForCompletion()')? –

ответ

0

Если вы используете 2.x версию elasticsearch, вы можете использовать плагин. Первая ссылка - вот почему они удалили DeleteByQuery из версий 2.x. Вторая ссылка - как ее установить и использовать.

https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/delete-by-query-plugin-reason.html

https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/delete-by-query-usage.html

Если вы используете это было добавлено снова версии 5.x и должны быть в состоянии использовать его как обычно. Я бы дважды повторил вашу версию.

Смежные вопросы