2016-07-27 1 views
6

J'ai un projet en Java où j'indexe les données en utilisant la recherche élastique 2.3.3. Les index sont de deux types.Supprimer Index par nom d'index et type en utilisant elasticSearch 2.3.3 en java

Mon index doc ressemble à:

{ 
    "took": 10, 
    "timed_out": false, 
    "_shards": { 
     "total": 1, 
     "successful": 1, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 3, 
     "max_score": 1, 
     "hits": [ 
     { 
      "_index": "test_index", 
      "_type": "movies", 
      "_id": "uReb0g9KSLKS18sTATdr3A", 
      "_score": 1, 
      "_source": { 
       "genre": "Thriller" 
      } 
     }, 
     { 
      "_index": "test_index", 
      "_type": "drama", 
      "_id": "cReb0g9KSKLS18sTATdr3B", 
      "_score": 1, 
      "_source": { 
       "genre": "SuperNatural" 
      } 
     }, 
     { 
      "_index": "index1", 
      "_type": "drama", 
      "_id": "cReb0g9KSKLS18sT76ng3B", 
      "_score": 1, 
      "_source": { 
       "genre": "Romance" 
      } 
     } 
     ] 
    } 
} 

Je dois supprimer l'index d'un nom particulier et tapez seulement.

Pour exemple: - Du doc ​​ci-dessus, je veux supprimer des index avec le nom "test_index" et tapez "drame".

Ainsi, le résultat devrait ressembler à:

{ 
    "took": 10, 
    "timed_out": false, 
    "_shards": { 
     "total": 1, 
     "successful": 1, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 2, 
     "max_score": 1, 
     "hits": [ 
     { 
      "_index": "test_index", 
      "_type": "movies", 
      "_id": "uReb0g9KSLKS18sTATdr3A", 
      "_score": 1, 
      "_source": { 
       "genre": "Thriller" 
      } 
     }, 
     { 
      "_index": "index1", 
      "_type": "drama", 
      "_id": "cReb0g9KSKLS18sT76ng3B", 
      "_score": 1, 
      "_source": { 
       "genre": "Romance" 
      } 
     } 
     ] 
    } 
} 

Solutions essayé:

client.admin() (indices) supprimer (nouveau DeleteIndexRequest ("test_index") actionGet (...);

Mais supprimer les index avec le nom "test_index"

J'ai également essayé différentes requêtes dans sens du plugin bêta comme:

SUPPRIMER/test_index/drame

Il donne l'erreur: Aucun gestionnaire trouvé pour uri [/ test_index/drame] et méthode [ SUPPRIMER]

SUPPRIMER/test_index/drame/_query q = _id: * & analyze_wildcard = true

Il ne fonctionne pas non plus.

Lorsque je tire la demande de suppression d'index à ce moment-là, l'identifiant des index nous est inconnu et je dois supprimer les index par nom et type seulement. Comment puis-je supprimer les index requis en utilisant java api?

+1

Avez-vous installé le [supprimer par requête plug-in] (https: //www.elastic.co/guide/fr/elasticsearch/plugins/2.3/plugins-delete-par-query.html)? La dernière requête fonctionne pour moi et ne supprime que les documents de 'test_index/drama' – Val

Répondre

2

Cela était possible jusqu'à ES 2.0 en utilisant l'API de mappage de suppression, mais puisque l'API 2.0 Delete Mapping n'existe plus. Pour ce faire, vous devrez installer le plugin Delete by Query. Ensuite, vous pouvez simplement faire correspondre toutes les requêtes sur votre index et tapez puis supprimez-les toutes.

La requête ressemblera à quelque chose comme ceci:

DELETE /test_index/drama/_query 
{ 
    "query": { 
    "query": { 
     "match_all": {} 
    } 
    } 
} 

Gardez à l'esprit que cela supprimera les documents dans la cartographie et non la cartographie elle-même. Si vous souhaitez également supprimer le mappage, vous devrez réindexer sans le mappage.

This pourrait être en mesure de vous aider à la mise en œuvre java

+0

Merci beaucoup. Cela a fonctionné pour moi. – ajain