美文网首页
ElasticSearch中报Fielddata is disa

ElasticSearch中报Fielddata is disa

作者: 谁在烽烟彼岸 | 来源:发表于2019-04-28 16:22 被阅读0次

    状况

    使用elasticsearch 进行排序的时候,我们一般都会排序数字、日期。但是在排序text类型的时候就会出现错误。

    原因

    Fielddata默认情况下禁用文本字段,因为Fielddata可以消耗大量的堆空间,特别是在加载高基数text字段时。一旦fielddata被加载到堆中,它将在该段的生命周期中保持在那里。此外,加载fielddata是一个昂贵的过程,可以导致用户体验延迟命中。
    所以Fielddata默认情况下禁用文本字段。

    解决方法

    1.修改Fielddata属性

    PUT my_index/_mapping/my_type
     { 
          “properties”:{ 
              “my_field”:{
                    “type”:“text”, 
                    “fielddata”:true 
                }
           } 
    }
    

    2.使用keyword

    使用我们要使用字段的keyword属性

    GET  my_index/my_type/_search
    {
      "sort":[
          {"region.keyword": {"order": "asc"}}
        ]
      , "from": 0
      , "size": 2
    }
    

    java代码

     QueryBuilder pageQuery = QueryBuilders.termQuery("page.keyword", page);
    
     AggregationBuilder aggPage = AggregationBuilders.terms("aggPage").field("page.keyword");
    

    相关文章

      网友评论

          本文标题:ElasticSearch中报Fielddata is disa

          本文链接:https://www.haomeiwen.com/subject/xkqjnqtx.html