2015-06-23 2 views
1

Я хочу проиндексировать свои товары в ElasticSearch, я нашел this.scrapy не экспортирует данные в эластичный поиск

Но если я пытаюсь сканировать сайт, я получаю следующее сообщение об ошибке:

File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 577, in _runCallbacks current.result = callback(current.result, *args, **kw) File "/usr/local/lib/python2.7/dist-packages/scrapyelasticsearch/scrapyelasticsearch.py", line 70, in process_item self.index_item(item) File "/usr/local/lib/python2.7/dist-packages/scrapyelasticsearch/scrapyelasticsearch.py", line 52, in index_item local_id = hashlib.sha1(item[uniq_key]).hexdigest() File "/home/javed/.local/lib/python2.7/site-packages/scrapy/item.py", line 50, in getitem return self._values[key] exceptions.KeyError: 'url'

ответ

2

Поскольку вы не вставить код паука, я могу предположить только вещи. Предполагается, что вы не установили обязательную заявку в своих товарах. Они должны иметь поле, указанное в ELASTICSEARCH_UNIQ_KEY, и оно должно быть уникальным. Самое простое, что может быть использовать url:

# somewhere deep in your callback, 
# where you create and yield your item 
... 
myitem['url'] = response.url 
return myitem 

и убедитесь, что установлен в settings.py:

ELASTICSEARCH_UNIQ_KEY = 'url' 
+0

Thanx Lot Lawrence..You're awesome .. – Javed

0

Я просто прокомментировал это поле в моем файле settings.py (это поле является необязательным соотв до official documentation))

#ELASTICSEARCH_UNIQ_KEY = 'url' # Custom unique key 
Смежные вопросы