2014-07-03 18 views

回答

5

对指数做任何事情都涉及指数API。 PUTing映射也是许多Indices API之一。可以在Python客户端文档的API Documentation下的Indices部分找到它们。您需要this: put_mapping(*args, **kwargs)

+0

感谢编辑和制作更清晰。 – vaidik

1

下面是一个完整的例子:

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)