elasticsearch - 在elasticSearch中使用RestClient检索特定字段

标签 elasticsearch jest

我将以下文档存储在 flex 搜索中

{"Book_Id" : "102" ,"Book_Name" : "Alice in wonderLand", "Review_Text" :"DescentRead","Rating_Percentage" :"100" }'
{"Book_Id" : "102" ,"Book_Name" : "Alice in wonderLand", "Review_Text" :"For Kids","Rating_Percentage" :"50" }'
{"Book_Id" : "103" ,"Book_Name" : "Blah Blah", "Review_Text" :"Great","Rating_Percentage" :"100" }'

我想搜索并仅检索一个字段(在此示例中为“查看文本”)。我正在使用以下代码
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  
searchSourceBuilder.query(QueryBuilders.matchQuery("Book_Id", "102"))
        .fields("_source.Review_Text");
Search search = new Search.Builder(searchSourceBuilder.toString())
                .addIndex("reviews")
                .addType("bookreview")
                .build();

SearchResult结果= client.execute(search);

但我不断收到错误-
{"error":{"root_cause":[{"type":"parsing_exception","reason":"Deprecated field [fields] used, expected [stored_fields] instead","line":10,"col":14}],

这里缺少什么?我们还如何只检索特定字段而不是像Json那样检索所有字段?

谢谢
沙布纳

最佳答案

如错误消息中所述,不建议直接访问fields。使用 source filtering代替:

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  
searchSourceBuilder.query(QueryBuilders.matchQuery("Book_Id", "102"))
        .fetchSource("Review_Text", null);                    <-- change this line
Search search = new Search.Builder(searchSourceBuilder.toString())
                .addIndex("reviews")
                .addType("bookreview")
                .build();

关于elasticsearch - 在elasticSearch中使用RestClient检索特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597278/

相关文章:

elasticsearch - 解析内部匹配以及来源

elasticsearch - 如何使用Jest客户端一次从Elasticsearch一次获取一万多个文档

elasticsearch - 匹配查询中字段的唯一值的Elasticsearch列表

elasticsearch - 如何删除 Elasticsearch 中的快照数据?

elasticsearch - ElasticSearch:使用查询获取单个文档排名

maven - ElasticSearch:使用Jest Client添加kerberos身份验证

elasticsearch - 如何在 Elasticsearch 中的现有映射中添加新字段时添加默认值

elasticsearch - 从 NEST 客户端获取原始查询

spring - 如果我减少@Document批注中的shards参数,Elasticsearch会自行减少shards数量吗?

node.js - jest-cli代码覆盖率仅显示零百分比