需要先建立索引
import os
import hashlib
from elasticsearch import Elasticsearch, ConnectionError, RequestError, NotFoundError
from image_match.elasticsearch_driver import SignatureES
DOC_TYPE = ‘image‘
MAPPINGS = {
"mappings": {
DOC_TYPE: {
"dynamic": True,
"properties": {
"metadata": {
"type": "object",
"dynamic": True,
"properties": {
"tenant_id": { "type": "string", "index" : "not_analyzed" }
}
}
}
}
}
}
def setup_index():
es = Elasticsearch()
try:
es.indices.create(index="images", body=MAPPINGS)
except RequestError as e:
if e.error == u‘index_already_exists_exception‘:
es.indices.delete(index_name)
else:
raise
setup_index()
然后dump数据
from elasticsearch import Elasticsearch
from image_match.elasticsearch_driver import SignatureES
es = Elasticsearch()
ses = SignatureES(es)
ses.add_image(‘https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg/687px-Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg‘)
ses.add_image(‘https://pixabay.com/static/uploads/photo/2012/11/28/08/56/mona-lisa-67506_960_720.jpg‘)
ses.add_image(‘https://upload.wikimedia.org/wikipedia/commons/e/e0/Caravaggio_-_Cena_in_Emmaus.jpg‘)
ses.add_image(‘https://c2.staticflickr.com/8/7158/6814444991_08d82de57e_z.jpg‘)
索引结果如下
然后进行检索
ses.search_image(‘https://pixabay.com/static/uploads/photo/2012/11/28/08/56/mona-lisa-67506_960_720.jpg‘)
返回结果如下, dist越小越好。
[
{‘dist‘: 0.0,
‘id‘: u‘AVM37oZq0osmmAxpPvx7‘,
‘metadata‘: None,
‘path‘: u‘https://pixabay.com/static/uploads/photo/2012/11/28/08/56/mona-lisa-67506_960_720.jpg‘,
‘score‘: 7.937254},
{‘dist‘: 0.22095170140933634,
‘id‘: u‘AVM37nMg0osmmAxpPvx6‘,
‘metadata‘: None,
‘path‘: u‘https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg/687px-Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg‘,
‘score‘: 0.28797293},
{‘dist‘: 0.42557196987336648,
‘id‘: u‘AVM37p530osmmAxpPvx9‘,
‘metadata‘: None,
‘path‘: u‘https://c2.staticflickr.com/8/7158/6814444991_08d82de57e_z.jpg‘,
‘score‘: 0.0499953}
]
原文:http://blog.51cto.com/12597095/2160915