elasticsearch,timeout,settimeout,Java,Search,elasticsearch,Timeout,Settimeout" /> elasticsearch,timeout,settimeout,Java,Search,elasticsearch,Timeout,Settimeout" />

如何在Java Elasticsearch中设置超时

如何在Java Elasticsearch中设置超时,java,search,elasticsearch,timeout,settimeout,Java,Search,elasticsearch,Timeout,Settimeout,你好,Elasticsearch的朋友们 我想在搜索时设置一个超时。因此,将SearchRequestBuilder中的setTimeout设置为10秒。但每次我的查询都会导致解析失败。我不明白为什么 这是我的SearchController和设置超时: @RestController public class SearchController { @Autowired @Named("es") private Node node; @RequestMapping(method = Reque

你好,Elasticsearch的朋友们 我想在搜索时设置一个超时。因此,将SearchRequestBuilder中的setTimeout设置为10秒。但每次我的查询都会导致解析失败。我不明白为什么

这是我的SearchController和设置超时:

@RestController
public class SearchController {
@Autowired
@Named("es")
private Node node;

@RequestMapping(method = RequestMethod.GET, value = "/search/{query}")
public List<Hit> search(@PathVariable("query") String query){
    Client client = node.client();
    List<Hit> esData = new ArrayList<Hit>();

    SearchRequestBuilder request1 = client.prepareSearch("orange11").setTimeout("10s").setQuery(query);

    SearchResponse response1 = request1.execute().actionGet();

    System.out.println("Hits: "+response1.getHits());

    for(SearchHit hit : response1.getHits()){

        Hit hitDto = new Hit(hit.getSource());
        Map<String, HighlightField> highlightFields = hit.getHighlightFields();
        for(String s : highlightFields.keySet()){
            List<String> fragmentsDto = new ArrayList<>();
            Text [] fragments = highlightFields.get(s).fragments();
            for (Text fragment : fragments){
                fragmentsDto.add(fragment.toString());
            }
            hitDto.addField("_all", fragmentsDto);
        }
        esData.add(hitDto);
    }
    return esData;
}


}
查询是:

{"size" : 10, "from" : 0, "query" : { "match" : { "_all" : {"query" : "'+searchTerm+'"}}}, "highlight" : {"fields" : { "*" : {}}, "require_field_match" : false}}}
节点设置包括:

        ImmutableSettings.Builder meineSettings = ImmutableSettings.settingsBuilder();
    meineSettings.put("node.name", "orange11-node");
    meineSettings.put("path.data", "/Users/lucaarchidiacono/IdeaProjects/moap2/MP3_MoapSampleBuild/data/index");
    meineSettings.put("index.store.type", "memory");
    meineSettings.put("http.enabled", false);

您的解码查询如下所示:

{
  "size": 10,
  "from": 0,
  "query": {
    "match": {
      "_all": {
        "query": "dolore"
      }
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    },
    "require_field_match": false
  }
}}
你有一个太多的卷曲括号结束,它应该是

{
  "size": 10,
  "from": 0,
  "query": {
    "match": {
      "_all": {
        "query": "dolore"
      }
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    },
    "require_field_match": false
  }
}          <--- fix this
{
“尺寸”:10,
“from”:0,
“查询”:{
“匹配”:{
“_all”:{
“查询”:“dolore”
}
}
},
“亮点”:{
“字段”:{
"*": {}
},
“需要字段匹配”:false
}

}您的解码查询如下:

{
  "size": 10,
  "from": 0,
  "query": {
    "match": {
      "_all": {
        "query": "dolore"
      }
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    },
    "require_field_match": false
  }
}}
你有一个太多的卷曲括号结束,它应该是

{
  "size": 10,
  "from": 0,
  "query": {
    "match": {
      "_all": {
        "query": "dolore"
      }
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    },
    "require_field_match": false
  }
}          <--- fix this
{
“尺寸”:10,
“from”:0,
“查询”:{
“匹配”:{
“_all”:{
“查询”:“dolore”
}
}
},
“亮点”:{
“字段”:{
"*": {}
},
“需要字段匹配”:false
}

}试试这个。以毫秒为单位,而不是以秒为单位

GET /_search?timeout=10ms

试试这个。以毫秒为单位,而不是以秒为单位

GET /_search?timeout=10ms

请注意,超时不是问题,查询的格式不正确。请注意,超时不是问题,查询的格式不正确。谢谢,我没有注意到这是我方的过错。不用担心,很高兴我们解决了。谢谢,我没有注意到这是我方的过错。不用担心,很高兴我们解决了。