Reconnaître les repères temporels à Kibana et ElasticSearch

Je suis nouveau à ElasticSearch et Kibana et j'ai du mal à faire reconnaître Kibana mes horodateurs.

j'ai un fichier JSON avec beaucoup de données que je souhaite insérer dans Elasticsearch en utilisant Curl. Voici un exemple d'une des entrées JSON.

{"index":{"_id":"63"}}
{"account_number":63,"firstname":"Hughes","lastname":"Owens", "email":"hughesowens@valpreal.com", "_timestamp":"2013-07-05T08:49:30.123"}

j'ai essayé de créer un index dans Elasticsearch en utilisant la commande:

curl -XPUT 'http://localhost:9200/test/'

j'ai alors essayé de mettre en place une cartographie appropriée pour le timestamp:

curl -XPUT 'http://localhost:9200/test/container/_mapping' -d'
{
"container" : {
"_timestamp" : {
"_timestamp" : {"enabled: true, "type":"date", "format": "date_hour_minute_second_fraction", "store":true}
}
}
}'

/ / format de l'horodatage de http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-date-format.html

j'ai alors essayé d'insérer mes données en vrac:

curl -XPOST 'localhost:9200/test/container/_bulk?pretty' --data-binary @myfile.json

toutes ces commandes s'exécutent sans faute cependant lorsque les données sont vues dans Kibana le champ _timestamp n'est pas reconnu. Tri via l'horodatage ne fonctionne pas et essayer de filtrer les données en utilisant des périodes différentes ne fonctionne pas. Toute idée sur la raison pour laquelle ce problème se produit est appréciée.

5
demandé sur user2985249 2014-10-02 13:50:23

3 réponses

a Réussi à résoudre le problème. Donc, pour quelqu'un d'autre ayant ce problème:

le format dans lequel nous avions enregistré notre date était incorrect, devait être:

"_timestamp":"2013-07-05 08:49:30.123"

alors notre cartographie devait être:

curl -XPUT 'http://localhost:9200/test/container/_mapping' -d'
{
"container" : {
"_timestamp" : {"enabled": true, "type":"date", "format": "yyyy-MM-dd HH:mm:ss.SSS", "store":true, "path" : "_timestamp"}
}
}'

J'espère que ça aidera quelqu'un.

6
répondu user2985249 2014-10-13 15:28:41

il n'y a pas besoin de faire et date ISO8601 dans le cas où vous avez un horodatage d'époque. Pour faire Kibana reconnaître le champ date est doit être un champ de date.

veuillez noter que vous devez définir le champ comme le type de date avant vous entrez n'importe quelle donnée dans le /index/type. Sinon il sera stocké aussi longtemps et immuable.

exemple Simple qui peut être collé dans le marvel/sens plugin:

# Make sure the index isn't there
DELETE /logger

# Create the index
PUT /logger

# Add the mapping of properties to the document type `mem`
PUT /logger/_mapping/mem
{
  "mem": {
    "properties": {
      "timestamp": {
        "type": "date"
      },
      "free": {
         "type": "long"
      }
    }
  }
}

# Inspect the newly created mapping
GET /logger/_mapping/mem

exécutez chacune de ces commandes en série.

Générer un mem journaux

voici un script simple qui fait écho à votre terminal et se connecte à votre elasticsearch local:

while (( 1==1 )); do memfree=`free -b|tail -n 1|tr -s ' ' ' '|cut -d ' ' -f4`; echo $load; curl -XPOST "localhost:9200/logger/mem" -d "{ \"timestamp\": `date +%s%3N`, \"free\": $memfree }"; sleep 1; done

Inspecter des données dans elastic search

collez ceci dans votre merveille / sens

GET /logger/mem/_search

Maintenant vous pouvez allez à Kibana et faites quelques graphiques. Kibana va autodétecter ton champ de rendez-vous.

5
répondu javabeangrinder 2015-10-16 08:09:37

cette solution fonctionne pour les plus vieux ES < 2.4 Pour la nouvelle version de ES, vous pouvez utiliser le champ "date" avec les paramètres suivants:: https://www.elastic.co/guide/en/elasticsearch/reference/current/date.html

-1
répondu kanishq 2017-05-06 22:22:09