Elasticsearch 使用问题记录

文章目录

Elasticsearch 使用问题记录

Text类型的字段,无法进行聚合和排序

  • 问题背景:在使用Elasticsearch的过程中,对Text类型的字段[conten]进行了聚合和排序的操作,如

    json 复制代码
    POST /my_index/_search
    {
    "size": 0,
    "aggs": {
        "terms_of_content": {
        "terms": {
            "field": "content"
        }
        }
    }
    }

    该index的mapping配置类似于

    json 复制代码
    "content" : {
          "type" : "text",
          "norms" : false,
          "analyzer" : "field_analyzer@content",
          "term_hash_enable" : true
        }
  • 报错信息

    复制代码
    java.lang.IllegalArgumentException: Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [content] in order to load field data by uninverting the inverted index. Note that this can use significant memory.
  • 问题原因:Text类型的字段,一般用于全文搜索,进行了分词分析;而排序和聚合需要将整个字段内容都看做一个整体(token)来构建对应的索引,因此对于Text这种用于全文搜索的字段,Elasticsearch默认拒绝对其进行排序和聚合的操作

  • 解决办法

    1. 可以通过修改mapping,在字段中增加一个fields,设置为keyword类型
    json 复制代码
    "content" : {
            "type" : "text",
            "fields" : {
                "keyword" : {
                "type" : "keyword"
                }
            }
    1. 也可以参照错误提示在mapping中增加fielddata=true(不推荐,会占用大量内存)
    json 复制代码
     "content": {
       "type": "text",
       "fielddata": true
     }

高亮查询匹配过多,超出高亮默认限制

  • 问题背景:在查询过程中,查询条件添加了高亮,出现了报错

    查询语句

    json 复制代码
    POST /logs/_search
    {
    "query": {
        "match": {
        "message": "specific_error_code"
        }
    },
    "highlight": {
        "fields": {
        "request_arguments": {} // Highlighting is attempted on the request_arguments field
        }
    }
    }
  • 报错信息

    复制代码
    The length of [specific_error_code] field of [32535924] doc "illegal argument exception', maximum allowed to be analyzed for highlighting.
  • 问题原因:高亮查询的内容超出了highlight.max_analyzed_offset的设置,该配置的含义为高亮的最大字符,默认为[10000]

  • 解决办法:通过调大索引限制(有oom风险)/修改高亮搜索条件

    json 复制代码
      PUT index/_settings
      {
          "index" : {
              "highlight.max_analyzed_offset" : 100000000
          }
      }
    json 复制代码
    POST /logs/_search
    {
    "query": {
        "match": {
        "message": "specific_error_code"
        }
    },
    "highlight": {
        "fields": {
        "*": {}, // Highlight all other fields except the one causing the issue
        "request_arguments": {"no_match": "none"} // Exclude request_arguments from highlighting
        }
    }
    }
相关推荐
二进制_博客4 分钟前
flume抽取kafka数据到kafka,数据无法从topicA抽取到topicB
大数据·kafka·flume
paperxie_xiexuo2 小时前
七款 AI PPT 工具新解:智能驱动演示升级,解锁多元创作场景
大数据·人工智能·powerpoint·大学生·ppt
q***76662 小时前
显卡(Graphics Processing Unit,GPU)架构详细解读
大数据·网络·架构
九河云2 小时前
不同级别华为云代理商的增值服务内容与质量差异分析
大数据·服务器·人工智能·科技·华为云
阿里云大数据AI技术2 小时前
【跨国数仓迁移最佳实践 12】阿里云 MaxCompute 实现 BigQuery 10 万条 SQL 智能转写迁移
大数据·sql
Elastic 中国社区官方博客2 小时前
Elasticsearch:Microsoft Azure AI Foundry Agent Service 中用于提供可靠信息和编排的上下文引擎
大数据·人工智能·elasticsearch·microsoft·搜索引擎·全文检索·azure
DolphinScheduler社区3 小时前
结项报告完整版 | 为 Apache DolphinScheduler 添加 gRPC 插件
大数据·开源·apache·海豚调度·大数据工作流调度
Faith_xzc3 小时前
Doris内存问题指南:监控、原理与高频OOM解决方案
大数据·性能优化·doris
学习吖3 小时前
vue中封装的函数常用方法(持续更新)
大数据·javascript·vue.js·ajax·前端框架
Saniffer_SH4 小时前
通过近期测试简单聊一下究竟是直接选择Nvidia Spark还是4090/5090 GPU自建环境
大数据·服务器·图像处理·人工智能·驱动开发·spark·硬件工程