J'utilise elasticsearch
. Je vois qu'il y a un méta-champ _id
pour chaque document. Je veux rechercher le document en utilisant ce méta-champ car je n'ai aucun autre champ comme champ unique dans le document. Mais _id
est une chaîne et peut avoir des tirets qui ne peuvent être recherchés que si nous ajoutons un mapping pour le champ type :keyword
. Mais il est possible comme mentionné here. Donc maintenant je pense à ajouter un autre champ newField
dans le document et le rendre identique à _id
. Une façon de le faire est: d'abord créer un document et affecter _id
à ce champ et enregistrer à nouveau le document. Mais cela aura 2 connexions ce qui n'est pas très bon. Donc, je veux trouver une solution pour définir newField
lors de la création du document lui-même. Est-ce même possible?elasticsearch: copier le méta-champ _id dans un autre champ lors de la création du document
0
A
Répondre
0
Vous pouvez rechercher un document qui contient des tirets:
PUT my_index/tweet/testwith-
{
"fullname" : "Jane Doe",
"text" : "The twitter test!"
}
Nous venons de créer un document avec un tableau de bord dans son id
GET my_index/tweet/_search
{
"query": {
"terms": {
"_id": [
"testwith-"
]
}
}
}
Nous recherchons pour le document dont l'ID suivant: testwith-
{
"took": 9,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "my_index",
"_type": "tweet",
"_id": "testwith-",
"_score": 1,
"_source": {
"fullname": "Jane Doe",
"text": "The twitter test!"
}
}
]
}
}
Nous l'avons trouvé. Nous pouvons faire une recherche sur un document qui contient.
0
vous pouvez également utiliser un processeur de jeu lors de l'utilisation d'un pipeline ingest pour stocker l'ID dans un champ supplémentaire, voir https://www.elastic.co/guide/en/elasticsearch/reference/5.5/accessing-data-in-pipelines.html et https://www.elastic.co/guide/en/elasticsearch/reference/5.5/set-processor.html