【问题标题】:Logstash-ES Data CheckLogstash-ES 数据检查
【发布时间】:2015-11-10 13:13:40
【问题描述】:

我目前正在使用 logstash-jdbc-plugin 从 DB 中提取数据并将其放入 ES 中的索引。 如何检查从数据库中提取的全部数据是否已插入 Elastic Search 索引。

提取的数据以百万计,无法继续手动检查

【问题讨论】:

    标签: elasticsearch logstash-grok logstash-configuration logstash-file logstash-jdbc


    【解决方案1】:

    我也有类似的需求,我做的是一个小脚本,可以查询 DB 和 ES 并比较记录数。

    该脚本可以像下面的 shell 脚本一样简单。它在数据库中查询MY_TABLE 中的记录数量,并将该数量存储在DB_COUNT 变量中。然后它向 ES 查询 my_table 索引中的记录数,并将该数字存储在 ES_COUNT 变量中。最后,它输出两个数字:

    #!/bin/sh
    
    # retrieve DB count
    DB_QUERY="SELECT COUNT(1) FROM MY_TABLE"
    DB_COUNT=$(mysql -u root --quick --disable-column-names -B -r -e "$DB_QUERY" -h localhost db_name)
    
    # retrieve ES count
    ES_QUERY="curl -s -XGET localhost:9205/my_table/_search?filter_path=hits.total"
    ES_COUNT=$($ES_QUERY | python -c 'import json,sys;obj=json.load(sys.stdin);print obj["hits"]["total"]')
    
    # compare
    echo "$DB_COUNT records in DB and $ES_COUNT docs in ES"
    

    如果一切顺利,您将看到如下输出:

    1267437 records in DB and 1267437 docs in ES
    

    如果记录数不同,那么我将使用二分法进行进一步调查,即执行相同的查询,但检索每年/月/周/天的记录数,以查看差异所在。

    【讨论】:

    • 有什么方法可以比较记录吗?就像从 es 中选择一些随机记录和从 db 中选择相同的记录并比较它们??
    • 是的,只要您在两边使用相同的 id。
    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 2020-02-16
    • 2019-01-18
    • 1970-01-01
    • 2019-10-27
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多