2015-10-16 77 views
2

当我插入大型活动到Elasticsearch,我收到一个错误:插入大事件Elasticsearch失败

java.lang.IllegalArgumentException: Document contains at least one immense term in field="_all" (whose UTF8 encoding is longer than the max length 32766), all of which were skipped. Please correct the analyzer to not produce such terms. The prefix of the first immense term is: '[<skipped>]...', original message: bytes can be at most 32766 in length; got 53021 

使用关键字分析仪,因为我不想给ES领域分割成单独记号所以这是我的索引定义:

{ 
     "index" : { 
      "analysis" : { 
       "analyzer" : { 
        "default" : { 
         "type" : "keyword" 
        } 
       } 
      } 
     } 
    } 

我怎样才能使ES接受我的大事件,但仍然有关键字分析仪为默认?

回答

1

所有字段值默认添加到_all字段中,并且由于该字段也使用关键字分析器,所以该字段将包含一个大小为50kB的令牌,这有点超过了限制。该限制似乎不可配置。

一种解决方案是指定一个不同的分析仪该字段:

curl -XPUT ${ES_HOST}:${ES_PORT}/${ES_INDEX}/${ES_TYPE}/_mapping -d " 
    { 
     "${ES_TYPE}": { 
      "_all\: { "analyzer": "standard" } 
     } 
    }" 
+0

我们有问题。就是这个解决方案的工作? –

+0

@RaghuKNair:我们在生产中有这样的功能,但我不确定它是如何工作的,因为它是前一阵子,我们也应用了一些更改。例如,有些领域的单手超过60kB,所以我们在源头上限制了他们。这就是为什么我不确定 – selle

+0

它的工作原理我尝试过 –