2016-07-17 2 views
8

У меня есть следующий запрос Nest, чтобы удалить все соответствующие документы, совершенно прямо, но я получаю 400 плохих запросов.Elasticsearch DeleteByQuery не работает, получая 400 плохих запросов

var client = new ElasticClient(); 
     var request = new DeleteByQueryRequest<Type>("my-index") 
     { 
      Query = new QueryContainer(
        new TermQuery 
        { 
         Field = "versionId", 
         Value = "ea8e517b-c2e3-4dfe-8e49-edc8bda67bad" 
        } 
       ) 
     }; 
     var response = client.DeleteByQuery(request); 
     Assert.IsTrue(response.IsValid); 

Спасибо за любую помощь.

--------------- --------------- Update

Запрос Body

{"query":{"term":{"versionId":{"value":"ea8e517b-c2e3-4dfe-8e49-edc8bda67bad"}}}} 

Response Body

{"took":0,"timed_out":false,"_indices":{"_all":{"found":0,"deleted":0,"missing":0,"failed":0}},"failures":[]} 

запрос в Sense плагин:

GET /my-index/type/_search 
{ 
    "query": { 

      "match": { 
      "versionId": "ea8e517b-c2e3-4dfe-8e49-edc8bda67bad" 
      } 

    } 
} 

Запрос Ответ:

{ 
    "took": 3, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 116, 
     "max_score": 2.1220484, 
     "hits": [] 
... 
}} 

--------------- NEST QUERY --------------

DELETE http://localhost:9200/my-index/component/_query?pretty=true 
{ 
    "query": { 
    "term": { 
     "versionId": { 
     "value": "ea8e517b-c2e3-4dfe-8e49-edc8bda67bad" 
     } 
    } 
    } 
} 

Status: 200 
{ 
    "took" : 0, 
    "timed_out" : false, 
    "_indices" : { 
    "_all" : { 
     "found" : 0, 
     "deleted" : 0, 
     "missing" : 0, 
     "failed" : 0 
    } 
    }, 
    "failures" : [ ] 
} 
+0

Какую версию Elasticsearch вы настраиваете и какую версию NEST вы используете? –

ответ

5

Это звучит, как вы может используйте Elasticsearch 2.x в сочетании с NEST 2.x. Как часть Elasticsearch 2.0, Delete by query was moved out of Elasticsearch core and into a separate plugin, который необходимо установить. Вы можете установить плагин, используя следующую команду в каталоге бен Elasticsearch

bin/plugin install delete-by-query 

Запуск узел снова, Удаление запроса должен теперь работать, как ожидалось.

Если вам нужно получить более подробную информацию о том, почему запрос не удался, вы можете проверить .DebugInformation на ответ, чтобы получить контрольный журнал для запроса.

+0

Блестящий, я попробую это благодаря кучу. –

+0

Russ, просто попробовав после установки плагина, теперь response.IsValid - это правда, но данные не удаляются. –

+0

Может ли быть coz Я не говорю о имени типа в запросе, кроме общего класса параметров. –

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