如何将我ES中的每个数据设置为未分析?

时间:2016-03-17 06:07:45

标签: python json elasticsearch

我有很多以json形式存储在SQS队列中的json数据。我有一个python脚本,基本上从SQS拉取数据,然后将其索引到ES。代码段如下所示:

doc = {
      "settings" : {
      "number_of_shards" : 1
       },
    "mappings" : {
             "_default_":{
                      "_timestamp" : {
                      "enabled" : 'true',
                      "store" : 'true'
                            }
                        }
              }
            }
es = Elasticsearch()
h = { "Content-type":"application/json" }
res = requests.request("POST","http://localhost:9200/"+index_name+"/",headers=h,data=json.dumps(doc))
post = es.index(index=index_name , doc_type='server' , id =1 , body=json.dumps(new_list))

所以基本上我的搜索不是很有效而且我读到https://www.elastic.co/guide/en/elasticsearch/guide/current/aggregations-and-analysis.html,我基本上想确保ES不会将我的数据对象分成更小的块。我/我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

如果您希望索引中的每个string字段变为not analyzed字符串,则需要使用Dynamic templates

 PUT index_name
 {
 "mappings": {
  "type_name": {
     "dynamic_templates": [
        {
           "strings": {
               "match_mapping_type": "string",
              "mapping": {
                 "type": "string",
                 "index": "not_analyzed"
              }
           }
        }
       ]
    }
   }
 }