在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

Elasticsearch 查询怎么返回指定的字段值

Elasticsearch | 作者 ld512870 | 发布于2014年12月31日 | 阅读数:26395

ElasticSearch查询的时候,如果通过rest查询,我们知道,通过设置_source:["name","age"],这样就可以设置好查询结果,过滤掉不需要的字段。那么,在java中用SearchRequestBuilder searchRequestBuilder = client.prepareSearch("test1").setTypes("test11")..........
这样弄的时候怎么进行设置呢?每次查询的结果每条记录都是所有的字段值,怎么设置需要的字段,我看里面有个setSource,试了一下,没管用啊。
已邀请:

stab - freshman

赞同来自: ld512870 Rubricate

不是很理解你的意思,不过如果你只是想让结果只显示指定的Field的话,你可以在searchRequestBuilder中调用addFiled函数

lemonr - 80后

赞同来自:

加上后.addField("fieldName"),

jsonStr = hit.getSourceAsString();
System.out.println(jsonStr);

为啥输出的是null

lemonr - 80后

赞同来自:

应该这么取值:
String result = hit.getFields().get("name").getValue();

jingkyks - 水果铅笔2B橡皮

赞同来自:

1:前提是_source字段没有禁用或者要返回的字段设置了store为true。
2:在api方面,addField就可以返回指定字段,设置之后getSourceAsString就为null了。

要回复问题请先登录注册