在弹性搜索中急切加载

时间:2016-06-21 06:59:53

标签: elasticsearch

我正在尝试在弹性搜索中加载。 我的索引如下 -

{"index":{"_index":"appname-ticketing","_type":"BLR"}}

我的映射如下 -

    {
  "appname-ticketing" : {
    "mappings" : {
    "BLR" : {
       "AppName" : {
            "type" : "string",
            "index" : "not_analyzed"
          }
        },
    "ABC" : {
       "AppName" : {
            "type" : "string",
            "index" : "not_analyzed"
          }
        }
    }
}

因此索引是appname-ticket,类型是BLR。 对于字段AppName,我想启用预先加载。 这就是我在做什么 -

curl -XPUT localhost:9200/appname-ticketing/BLR/_mapping/AppName -d"
{
  \"tags\": {
    \"type\": \"string\", \"index\" : \"not_analyzed\",
    \"fielddata\": {
      \"loading\" : \"eager\" 
    }
  }
}"

但是我收到以下错误 -

No handler found for uri [/appname-ticketing/BLR/_mapping/AppName] and method [PUT]

2 个答案:

答案 0 :(得分:1)

我认为添加update_all_types参数会更新BLR和ABC以及所有其他类型的文本字段:

这是因为映射基本上被扁平化为整个索引的单个全局模式。这就是为什么两种类型无法定义冲突字段的原因。see this

当映射拼凑在一起时,Lucene不知道该怎么办,因此错误。

所以你需要做这样的事情:

curl -XPUT localhost:9200/appname-ticketing/_mapping/BLR/?update_all_type -d '{
  "properties": {
    "AppName": {
      "type": "string", 
      "index" : "not_analyzed",
      "fielddata": {
        "loading" : "eager" 
      }
    }
  }
}'

如需进一步参考,您可以查看 this link

答案 1 :(得分:0)

你应该这样做:

completion:^(BOOL done){
laserView.frame = initial frame  
            }];