小编Aru*_*ash的帖子

SearchContextMissingException无法执行获取阶段[search/phase/fetch/id]


Cluser:我正在使用elasticsearch 1.3.1,在不同的服务器中有6个节点,这些服务器都通过LAN连接.带宽很高,每个带有45 GB RAM.

配置我们为要运行的节点分配的堆大小为10g.除了唯一的discoverym,集群名称,节点名称和我们2区域之外,我们确实有elasticsearch默认配置.3节点属于一个区域,另一个属于另一个区域.

指数:15,指数总量为76GB.

现在,我正面临着SearchContextMissingExceptionDEBUG日志的异常.它闻起来像一些搜索查询花了很多时间来获取.但我检查了查询,没有查询产生大量的负载...我想知道为什么会发生这种情况.

问题:由于这个问题逐个所有节点开始收集GC.并导致OOM :(

这是我的例外.请帮我解释一下2件事.

  1. 什么是SearchContextMissingException?为什么会这样?
  2. 我们如何防止这些类型的查询群集?

错误:

[YYYY-MM-DD HH:mm:ss,039][DEBUG][action.search.type ] [es_node_01] [5031530] 
   Failed to execute fetch phase 
   org.elasticsearch.transport.RemoteTransportException: [es_node_02][inet[/1x.x.xx.xx:9300]][search/phase/fetch/id] 
   Caused by: org.elasticsearch.search.SearchContextMissingException: No search context found for id [5031530] 
       at org.elasticsearch.search.SearchService.findContext(SearchService.java:480) 
       at org.elasticsearch.search.SearchService.executeFetchPhase(SearchService.java:450) 
       at org.elasticsearch.search.action.SearchServiceTransportAction$SearchFetchByIdTransportHandler.messageReceived(SearchServiceTransportAction.java:793) 
       at org.elasticsearch.search.action.SearchServiceTransportAction$SearchFetchByIdTransportHandler.messageReceived(SearchServiceTransportAction.java:782) 
       at org.elasticsearch.transport.netty.MessageChannelHandler$RequestHandler.run(MessageChannelHandler.java:275) 
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
       at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)

java elasticsearch

5
推荐指数
1
解决办法
3292
查看次数

使用 Jackson 注释在 POJO 中序列化和解包 Map 对象

我有一个名为 paramMap 的属性作为 Map 类型的 POJO。

import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.annotation.JsonUnwrapped;

@JsonTypeInfo(include=As.WRAPPER_OBJECT, use=Id.NAME)
public class Pojo {

    @JsonUnwrapped
    private Map<String, Object> paramMap = new HashMap<String, Object>();

    public Map<String, Object> getParamMap() {
        return paramMap;
    }

    public void setParamMap(Map<String, Object> paramMap) {
        this.paramMap = paramMap;
    }
Run Code Online (Sandbox Code Playgroud)

考虑我在地图中填充了一些值,现在我想序列化它并解开属性名称paramMap

预期输出:

{
    "Pojo": {
        "name": "value1",
        "age": 12,
        "date": "12/02/2015"
    }
}
Run Code Online (Sandbox Code Playgroud)

实际产量

{
    "Pojo": {
        "paramMap": {
            "name": "value1",
            "age": 12,
            "date": "12/02/2015"
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc jackson

5
推荐指数
1
解决办法
3265
查看次数

标签 统计

java ×2

elasticsearch ×1

jackson ×1

spring-mvc ×1