gpt4 book ai didi

elasticsearch - 如何使用Java API创建和检索具有复杂类型的Elasticsearch字段?

转载 作者:行者123 更新时间:2023-12-03 00:34:02 24 4
gpt4 key购买 nike

我有以下内容:

final duration = (jsonBuilder()
.startObject()
.field('start', new DateTime(testResult.startTime, dateTimeZone))
.field('end', new DateTime(testResult.endTime, dateTimeZone))
.endObject())

client.prepareIndex('builds', 'test')
.setSource(jsonBuilder()
.startObject()
.field("duration", duration)
.endObject())

SearchResponse searchResponse = client.prepareSearch('builds')
.setQuery(boolQuery()
.must(termQuery('_type', 'test')))
.execute()
.actionGet()

final source = searchResponse.hits.hits[0].source as Map<String, Object>

如何从此处检索 duration.startduration.end的值?

最佳答案

尝试1 ..!

    SearchHit[] searchHits = searchResponse.getHits().getHits();
Map<String, Object> s=searchHits[0].sourceAsMap();
Map<String, Date> duration=(Map<String, Date>) s.get("duration");
Date start=duration.get("start");
Date end=duration.get("end");

尝试2 ..!
    SearchHit[] searchHits = searchResponse.getHits().getHits();
StringBuilder builder = new StringBuilder();
int length = searchHits.length;
builder.append("[");
for (int i = 0; i < length; i++) {
if (i == length - 1) {
builder.append(searchHits[i].getSourceAsString());
} else {
builder.append(searchHits[i].getSourceAsString());
builder.append(",");
}
}
builder.append("]");
String result= builder.toString();

它会返回一个字符串,并且它的有效JSON数组使用JSON解析器并像常规JSON进程那样获取值。

关于elasticsearch - 如何使用Java API创建和检索具有复杂类型的Elasticsearch字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21567384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com