#elasticsearch
#elasticsearch
Вопрос:
В документах elasticsearch-py я не могу найти пример регистрации сопоставления, которое выполняет то, что указано в документах REST API:
API put mapping позволяет зарегистрировать конкретное определение сопоставления для определенного типа.
$ curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d '
{
"tweet" : {
"properties" : {
"message" : {"type" : "string", "store" : true }
}
}
}
'
Ответ №1:
Выполнение чего-либо с индексом включает API-интерфейсы индексов. Отображение ввода также является одним из многих API индексов. Их можно найти в Indices
разделе под API Documentation
клиентской документации Python.
И вам нужно это: put_mapping(*аргументы, ** kwargs).
Ответ №2:
Вот полный пример :
from elasticsearch import Elasticsearch
def fMap(document_type):
mapping={document_type:{
"properties":{
"a_field":{"type":"integer","store":"yes"},
"other_field": {"type":"string","index":"analyzed","store":"no"},
"title":{"type":"string","store":"yes","index": "analyzed","term_vector":"yes","similarity":"BM25"},
"content":{"type":"string","store":"yes","index": "analyzed","term_vector": "yes","similarity":"BM25"}
}}}
return mapping
def dSetting(nShards,nReplicas):
dSetting={
"settings":{"index":{"number_of_shards":nShards,"number_of_replicas":nReplicas}},
"analysis":{
"filter":{
"my_english":{"type":"english","stopwords_path":"english.txt"},
"english_stemmer":{"type":"stemmer","language":"english"}},
"analyzer":{"english":{"filter":["lowercase","my_english","english_stemmer"]}}}}
return dSetting
def EsSetup(con,idx,docType,dset,mapping):
con.indices.delete(index=idx,ignore=[400, 404])
con.indices.create(index=idx,body=dset,ignore=400)
con.indices.put_mapping(index=idx,doc_type=docType,body=mapping)
conEs=Elasticsearch([{'host':'localhost','port':9200,'timeout':180}])
dMap = fMap('docTypeName')
dSet = dSetting(8,1)
EsSetup(conEs,'idxName','docTypeName',dset,dMap)