Changer _id

Bonjour

J'aimerais changer la valeur de _id par une valeur d'un champ lorsque je creer un document.
J'ai essaye avec cette page : https://www.elastic.co/guide/en/elasticsearch/reference/1.4/mapping-id-field.html mais sans succes... j'aimerais utiliser la methode Path

Voici mon code json:

{  
     "document":{
	 "_id" : {
            "path" : "Service-Card.Service-Name",
	        "index" : "not_analyzed",
            "store" : true
        },
      	    "properties":{ 
                      "Service-Card":{"type":"object",
		 	       "properties":{
                                  "ID":{"type":"string"},
                                  "Service-Name":{"type":"string"},
                                  "LiveWebUrl":{"type":"string"},
                                  "Categories":{"type":"nested",
                                      "properties":{
                                           "Selection":{"type" : "string"}
				             }
                        },
                    "Staff":{"type":"nested",
                        "properties":{
                            "Responsible":{"type" : "string"},
                            "Developers" : {"type" : "string"},
                            "Users":{"type": "string"}
                            }
			},	
                     "RSS":{"type":"nested",
                        "properties":{
                            "JiraRRS":{"type" : "string"},
                            "LiveStatusRSS": {"type" : "string"}
                            }
			    }	
                   }
	          }
        }
    }
}

Voici l'exemple pour creer un document:

{ "index" : { "_index" : "myindex", "_type" : "document" } }

{"ID":"T4" ,"Service-Name":"Test4","LiveWebUrl":"http://test4.ch" ,"Categories": {"Selection":"Cat4"},"Staff":{"Responsible":"Admin4","Developers":"Test4IT","User":"Ice"},"RSS":{"JiraRSS": "http://test4.ch/jirarss","LiveStatusRSS":"http://test4.ch/LiveRSS"}}

Lorsque je creer le document l' _id est genere aleatoirement or je voudrais que l _id du document prenne la valeur de Service-Name, une idee ?

J'utilise Advenced Rest Client (un module google chrome ) pour gerer tout ca.
Merci d'avance!

Faudrait voir exactement les requêtes que tu fais pour avoir une idée exacte.

Néanmoins, je te décourage d'extraire l'_id depuis le document car cette possibilité sera supprimée en 2.0 (de mémoire).

Enfaite quand je cree un doc avec des valeurs ca me donne ca (Avec Advanced Rest Client) :

{
_index: "myindex"
_type: "document"
_id: "AU3dnRPqXpa8Oui36Lz7"
_version: 1
created: true
} 

Tout est nikel quand je vais voir le doc a l' adresse en question http://cvl-eladocker:9200/myindex/document/AU3dnRPqXpa8Oui36Lz7/?pretty

Seulement j'aimerais juste changer l'id lors de la creation du document (dans mon cas) car sur l'exemple ici l'id est genere aleatoirement.

Si tu veux fixer un id particulier pour le document lors de son ajout, il suffit de préciser toute l'url.

Donc d'utiliser: http://cvl-eladocker:9200/myindex/document/lidquetuveux

Premier exemple sur le site où il ajoute un document avec l'id 1: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html

curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
    "user" : "kimchy",
    "post_date" : "2009-11-15T14:12:12",
    "message" : "trying out Elasticsearch"
}'
1 Like

Ah c'est parfait ca !

Merci ! :smiley: