0
votes

Combinez deux index en troisième index dans la recherche élastique à l'aide de LOWSTH

J'ai deux index

  1. employé_data {"Code": 1, "Nom": XYZ, "Ville": "Mumbai"} Code> Li>
  2. transaction_data {"Code": 1, "Mois": Juin ", Paiement: 78000} Code> Li> ol>

    je veux troisième index comme celui-ci 3) join_index p>

    {"code": 1, "nom": xyz, "ville": "mumbai", "mois": juin ", paiement: 78000} code> Comment c'est possible ?? p>

    J'essaie en LOGSTHESH P>

    index => "join1"
       }
    


0 commentaires

3 Réponses :


0
votes

Tant que je sache, cela ne peut pas être arrivé à l'aide d'API d'Elasticsearch. Pour gérer cela, vous devez définir un identifiant unique pour des documents pertinents. Par exemple, le code que vous avez mentionné dans votre question peut être un bon identifiant pour les documents. Vous pouvez donc réindexer le premier index au troisième et utiliser l'API de mise à jour pour les mettre à jour en lisant des documents à partir du deuxième index et les mettre à jour par leurs identifiants dans le troisième index. J'espère que je pourrais aider.


1 commentaires

En fait, j'essaie de la recherche élastique de Logstash



1
votes

Vous pouvez utiliser Elasticsearch Entrée sur Employé_data

dans vos filtres, utilisez le filtre Elasticssearch sur transaction_data xxx

et envoyer votre nouveau document à votre troisième index avec l'Elasticsearch Sortie

Vous aurez 3 recherches élastiques connexion et le résultat peut être un peu lent. Mais ça marche.


10 commentaires

Il ne me donne que le nom, l'âge et le salaire


Entrée {élasticsearch {hosts => ["localhost"] index => "Employé_data" Query => '{"Query": {"match_all": {}}}' Scroll => "5m" Docinfo => True}} Filtre {elasticsearch {hosts => ["localhost"] index => "transaction_data" Query => '{"Query": {"Match": {"Code": "1"}}}' Champs => {"Moth" => "mois" "Paiement" => "Paiement"}}} Sortie {Elasticsearch {hosts => ["localhost"] index => "join32"}}}}}}}


Données de transaction: "_index": "transaction_data", "_type": "_doc", "_doc": "0lritxqbbyoi5xzyofx-", "_score": 1.0, "_source": {"Code": 1, "Moth": " Juin "," Paiement ": 32080


Désolé mais votre commentaire est très difficile. Je suppose que certains champs sont manquants. Vous devez déclarer chaque champ dans les instructions "champs" de votre filtre élastique elastic.co/guide/fr/logstash/Current/.../a>


champs => {"Paiement" => "Paiement"}


Aucun mappage trouvé pour [@TMESTAMTAMN] pour trier est l'erreur


Ok c'est mieux. Par défaut, le filtre ElasticSeSearch vous envoie le premier résultat de votre ordre de requête par horodatage. Ajoutez simplement ce code et il devrait fonctionner Trier => Code: Desc »ou commandez-le comme vous le souhaitez. Je viens de modifier ma réponse


@Abhishek Si la réponse vous aide s'il vous plaît valider et uppote


Y a-t-il un moyen de filtrer uniquement l'index comme chez les employés_data, je souhaite filtrer des enregistrements de la ville comme ville: Mumbai


Stackoverflow.com/Questtions/64097516/...



1
votes

Vous n'avez pas besoin de la rampe d'entreprise pour faire cela, Elasticsearch lui-même soutient qu'en tirant parti de la Processeur enrich code> .

Premièrement, vous devez créer une stratégie enrichie (utilisez l'index le plus petit, disons que c'est Employés_Data ): p> xxx pré>

alors vous pouvez exécuter cette stratégie afin de créer un index d'enrichissement p> xxx pré>

lorsque le L'indice d'enrichissement a été créé et peuplé, la prochaine étape vous oblige à créer un pipeline Ingest qui utilise la stratégie / index enrichi ci-dessus: P>

  {
    "_index" : "join1",
    "_type" : "_doc",
    "_id" : "0uA8dXMBU9tMsBeoajlw",
    "_score" : 1.0,
    "_source" : {
      "code":1, 
      "name": "xyz", 
      "city": "Mumbai", 
      "Month": "June", 
      "payment": 78000 
    }
  }


2 commentaires

merci Val j'apprécie vraiment votre approche, mais je veux le faire de LOGSTH


Ok, ce n'était pas clair, il fallait passer par Logstash. Mais bien, alors qu'est-ce que @jaycreation suggère une façon d'aller ...