Как выполнить массовую загрузку тысяч файлов JSON вasticsearch - PullRequest
0 голосов
/ 20 мая 2019

Я знаю, что есть много других мест, где я могу найти разные ответы на мою проблему, но я пробовал большинство из них, ничего не решая.

Я пытаюсь проиндексировать 85.000 файлов JSON для моего экземпляра эластичного поиска. Файлы JSON имеют небольшой размер, на 99% меньше 2 КБ и создаются onionscan - инструментом, предназначенным для сканирования темных веб-сайтов с целью получения информации (электронные письма, адреса биткойнов и т. Д.) И выявления уязвимостей.

Мне удалось проиндексировать 90% моих файлов, но оставшиеся 10% (что является наиболее важной частью, поскольку только 10% файлов Json содержат информацию!) Не загружаются.

В настоящее время я использую этот код, который может загружать только те файлы JSON, в которых сканер Onionscan ничего не нашел:

    import requests, json, os
    from elasticsearch import Elasticsearch

    directory = 'C:/Users/Hp/onionscan_results'

    res = requests.get('http://localhost:9200')
    print ("Loading JSON objects to Elasticsearch. Please wait...")
    es = Elasticsearch([{'host': 'localhost', 'port': '9200'}])

    i = 1

    for filename in os.listdir(directory):
        if filename.endswith(".json"):
         f = open(filename)
         docket_content = f.read()
            # Send the data into es
         es.index(index='darkweb', ignore=400, doc_type='docket', id=i, 
     body=json.loads(docket_content))
         i = i + 1

Это образец JSON из моего репо:

     {  
       "hiddenService":"qnzsbipihn3coe63.onion",
       "dateScanned":"2019-04-17T20:57:16.185098805Z",
       "online":false,
       "performedScans":[  
          "web"
       ],
       "webDetected":true,
       "crawls":{  
          "http://qnzsbipihn3coe63.onion/":3575956962652378467,
       },
       "pgpKeys":null,
       "certificates":null,
       "bitcoinServices":{  
          "bitcoin":{  
             "detected":false,
          },
          "bitcoin_test":{  
             "detected":false,
          },
          "litecoin":{  
             "detected":false,
             "userAgent":"",
             "prototocolVersion":0,
             "onionPeers":null
          }
       },
       "sshKey":"",
       "identifierReport":{  
          "privateKeyDetected":false,
          "foundApacheModStatus":false,
       },
       "simpleReport":{  
          "hiddenService":"qnzsbipihn3coe63.onion",
          "risks":null
       }
    }

Я не получаю сообщение об ошибке при попытке использовать приведенный выше код. Он просто выходит, но тогда общее количество проиндексированных JSON в Elasticsearch не соответствует ожидаемому (примерно 10.000 не индексируются). Я также попытался с Curl безуспешно (возможно, я не знаю точную команду).

Спасибо за любые предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...