0

Info:Obtenir fichier journal car il utilise la recherche élastique

Filebeat est installé sur la machine où les journaux sont lus et envoyés au serveur de recherche élastique. À partir de la machine de test, en utilisant elasticsearch-dsl, je lis les journaux et je l'écris dans un fichier.

Problème:

Orig Connexion de la machine:

[Timestamp][INFO] AAAAAA 
[Timestamp][INFO] BBBBBB 
[Timestamp][INFO] CCCCCC 

Après la recherche et les journaux écriture dans le fichier de sortie:

[Timestamp][INFO] CCCCCC 
[Timestamp][INFO] AAAAAA 
[Timestamp][INFO] BBBBBB 

Comment garder intacte la séquence du journal ou c'est?

code:

from elasticsearch import Elasticsearch 
from elasticsearch_dsl import Search, Q, Index 
import time 
#Make Connection 
es = Elasticsearch(["100.16.13.222:9200"]) 

#Create Index Object 
ind = Index("filebeat-*",using=es) 
#Clear Cache 
ind.clear_cache() 
#Create Search object for this index 
sear = ind.search() 

#Create query 
sear = sear.query("match",host="WIN-LK9FS7568K4").query("match",tags="old_log") 
res = sear.execute(ignore_cache=True) 
print int(res.hits.total) 

with open("a.txt","w") as fh: 
    for i in sear.scan(): 
     fh.write(i.message+"\n") 
+0

Dans votre recherche, vous devez trier vos journaux par horodatage – Val

+0

Val - Il y aura deux horodatages. Horodatage dû à la recherche élastique et à l'horodatage des journaux. Comment trier en utilisant l'horodatage des journaux? –

+0

@Val - Pouvez-vous m'aider s'il vous plaît. Comment utiliser regexp dans une requête en utilisant python elasticsearch-dsl? –

Répondre

1

Vous devez trier vos journaux par horodatage. Modifiez votre code de recherche à ceci:

sear = sear.sort('timestamp') 
      .query("match",host="WIN-LK9FS7568K4") 
      .query("match",tags="old_log") 

Bien sûr, vous devez changer timestamp pour correspondre à votre champ d'horodatage.

+0

Merci pour votre aide !!! Encore une question. Comment chercher en utilisant "offset"? J'ai essayé sear.sort ("décalage") mais il n'est pas trier –

+1

Ceci est décrit [ici] (https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html#pagination), en utilisant simplement le API de découpage Python. – Val