elasticsearch,Grails,elasticsearch" /> elasticsearch,Grails,elasticsearch" />

Grails 字符串json到ElasticSearchResponse对象?

Grails 字符串json到ElasticSearchResponse对象?,grails,elasticsearch,Grails,elasticsearch,我有来自elasticsearch rest客户端的json响应。我想从该字符串(json)创建ElasticSearchResponse或GetResponse对象,这样我就可以重用grails-2.4.3 elasticsearch插件中的反封送部分。有人能帮我吗?我不确定这个问题是否仍然相关,但这个问题对我有效: String responseJson = "{\"took\":5,\"timed_out\":false,\"_shards\".....}"; try { JsonXC

我有来自elasticsearch rest客户端的json响应。我想从该字符串(json)创建ElasticSearchResponse或GetResponse对象,这样我就可以重用grails-2.4.3 elasticsearch插件中的反封送部分。有人能帮我吗?

我不确定这个问题是否仍然相关,但这个问题对我有效:

String responseJson = "{\"took\":5,\"timed_out\":false,\"_shards\".....}";
try {
  JsonXContentParser xContentParser = new JsonXContentParser(NamedXContentRegistry.EMPTY,
  new JsonFactory().createParser(responseJson));      
  SearchResponse response = SearchResponse.fromXContent(xContentParser);
  ... 
  Do Whatever
  ...
} catch (IOException e) {
  handleException....
}

我不确定这个问题是否仍然相关,但这个问题对我很有用:

String responseJson = "{\"took\":5,\"timed_out\":false,\"_shards\".....}";
try {
  JsonXContentParser xContentParser = new JsonXContentParser(NamedXContentRegistry.EMPTY,
  new JsonFactory().createParser(responseJson));      
  SearchResponse response = SearchResponse.fromXContent(xContentParser);
  ... 
  Do Whatever
  ...
} catch (IOException e) {
  handleException....
}

我确实设法找到了对你有帮助的东西

我写了一个JSON,如下所示:

XContentBuilder builder = XContentFactory.jsonBuilder();
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
String result = Strings.toString(builder);
 try {
     NamedXContentRegistry registry = new NamedXContentRegistry(getDefaultNamedXContents());
     XContentParser parser = JsonXContent.jsonXContent.createParser(registry, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, result);
     SearchResponse searchResponse = SearchResponse.fromXContent(parser);
 } catch (IOException e) {
     System.out.println("exception " + e);
 } catch (Exception e) {
     System.out.println("exception " + e);
 }

public static List<NamedXContentRegistry.Entry> getDefaultNamedXContents() {
    Map<String, ContextParser<Object, ? extends Aggregation>> map = new HashMap<>();
    map.put(TopHitsAggregationBuilder.NAME, (p, c) -> ParsedTopHits.fromXContent(p, (String) c));
    map.put(StringTerms.NAME, (p, c) -> ParsedStringTerms.fromXContent(p, (String) c));
    List<NamedXContentRegistry.Entry> entries = map.entrySet().stream()
            .map(entry -> new NamedXContentRegistry.Entry(Aggregation.class, new ParseField(entry.getKey()), entry.getValue()))
            .collect(Collectors.toList());
    return entries;
}
然后我设法这样读:

XContentBuilder builder = XContentFactory.jsonBuilder();
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
String result = Strings.toString(builder);
 try {
     NamedXContentRegistry registry = new NamedXContentRegistry(getDefaultNamedXContents());
     XContentParser parser = JsonXContent.jsonXContent.createParser(registry, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, result);
     SearchResponse searchResponse = SearchResponse.fromXContent(parser);
 } catch (IOException e) {
     System.out.println("exception " + e);
 } catch (Exception e) {
     System.out.println("exception " + e);
 }

public static List<NamedXContentRegistry.Entry> getDefaultNamedXContents() {
    Map<String, ContextParser<Object, ? extends Aggregation>> map = new HashMap<>();
    map.put(TopHitsAggregationBuilder.NAME, (p, c) -> ParsedTopHits.fromXContent(p, (String) c));
    map.put(StringTerms.NAME, (p, c) -> ParsedStringTerms.fromXContent(p, (String) c));
    List<NamedXContentRegistry.Entry> entries = map.entrySet().stream()
            .map(entry -> new NamedXContentRegistry.Entry(Aggregation.class, new ParseField(entry.getKey()), entry.getValue()))
            .collect(Collectors.toList());
    return entries;
}
试试看{
NamedXContentRegistry=newNamedxContentRegistry(getDefaultNamedXContents());
XContentParser parser=JsonXContent.JsonXContent.createParser(注册表,DeprecationHandler.THROW\u不支持的\u操作,结果);
SearchResponse SearchResponse=SearchResponse.fromXContent(解析器);
}捕获(IOE异常){
系统输出打印项次(“例外”+e);
}捕获(例外e){
系统输出打印项次(“例外”+e);
}
公共静态列表getDefaultNamedXContents(){
Map Map=newhashmap();
put(TopHitsAggregationBuilder.NAME,(p,c)->ParsedTopHits.fromXContent(p,(String)c));
put(StringTerms.NAME,(p,c)->ParsedStringTerms.fromXContent(p,(String)c));
列表条目=map.entrySet().stream()
.map(entry->new NamedXContentRegistry.entry(Aggregation.class,new ParseField(entry.getKey()),entry.getValue())
.collect(Collectors.toList());
返回条目;
}

希望它能起作用:)

我确实找到了一些可能对你有帮助的东西

我写了一个JSON,如下所示:

XContentBuilder builder = XContentFactory.jsonBuilder();
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
String result = Strings.toString(builder);
 try {
     NamedXContentRegistry registry = new NamedXContentRegistry(getDefaultNamedXContents());
     XContentParser parser = JsonXContent.jsonXContent.createParser(registry, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, result);
     SearchResponse searchResponse = SearchResponse.fromXContent(parser);
 } catch (IOException e) {
     System.out.println("exception " + e);
 } catch (Exception e) {
     System.out.println("exception " + e);
 }

public static List<NamedXContentRegistry.Entry> getDefaultNamedXContents() {
    Map<String, ContextParser<Object, ? extends Aggregation>> map = new HashMap<>();
    map.put(TopHitsAggregationBuilder.NAME, (p, c) -> ParsedTopHits.fromXContent(p, (String) c));
    map.put(StringTerms.NAME, (p, c) -> ParsedStringTerms.fromXContent(p, (String) c));
    List<NamedXContentRegistry.Entry> entries = map.entrySet().stream()
            .map(entry -> new NamedXContentRegistry.Entry(Aggregation.class, new ParseField(entry.getKey()), entry.getValue()))
            .collect(Collectors.toList());
    return entries;
}
然后我设法这样读:

XContentBuilder builder = XContentFactory.jsonBuilder();
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
String result = Strings.toString(builder);
 try {
     NamedXContentRegistry registry = new NamedXContentRegistry(getDefaultNamedXContents());
     XContentParser parser = JsonXContent.jsonXContent.createParser(registry, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, result);
     SearchResponse searchResponse = SearchResponse.fromXContent(parser);
 } catch (IOException e) {
     System.out.println("exception " + e);
 } catch (Exception e) {
     System.out.println("exception " + e);
 }

public static List<NamedXContentRegistry.Entry> getDefaultNamedXContents() {
    Map<String, ContextParser<Object, ? extends Aggregation>> map = new HashMap<>();
    map.put(TopHitsAggregationBuilder.NAME, (p, c) -> ParsedTopHits.fromXContent(p, (String) c));
    map.put(StringTerms.NAME, (p, c) -> ParsedStringTerms.fromXContent(p, (String) c));
    List<NamedXContentRegistry.Entry> entries = map.entrySet().stream()
            .map(entry -> new NamedXContentRegistry.Entry(Aggregation.class, new ParseField(entry.getKey()), entry.getValue()))
            .collect(Collectors.toList());
    return entries;
}
试试看{
NamedXContentRegistry=newNamedxContentRegistry(getDefaultNamedXContents());
XContentParser parser=JsonXContent.JsonXContent.createParser(注册表,DeprecationHandler.THROW\u不支持的\u操作,结果);
SearchResponse SearchResponse=SearchResponse.fromXContent(解析器);
}捕获(IOE异常){
系统输出打印项次(“例外”+e);
}捕获(例外e){
系统输出打印项次(“例外”+e);
}
公共静态列表getDefaultNamedXContents(){
Map Map=newhashmap();
put(TopHitsAggregationBuilder.NAME,(p,c)->ParsedTopHits.fromXContent(p,(String)c));
put(StringTerms.NAME,(p,c)->ParsedStringTerms.fromXContent(p,(String)c));
列表条目=map.entrySet().stream()
.map(entry->new NamedXContentRegistry.entry(Aggregation.class,new ParseField(entry.getKey()),entry.getValue())
.collect(Collectors.toList());
返回条目;
}
希望它能起作用:)