【问题标题】:retrieving specific fileds using JestClient in elastic Serach在 elasticSearch 中使用 RestClient 检索特定字段
【发布时间】:2017-08-09 17:37:40
【问题描述】:

我在弹性搜索中存储了以下文档

{"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

谢谢 沙布纳

【问题讨论】:

    标签: elasticsearch elasticsearch-jest


    【解决方案1】:

    不推荐直接访问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();
    

    【讨论】:

    • fetchSource 未为 SearchSourceBuilder 定义。
    • 您使用的是哪个版本的 elasticsearch 库?
    • 搞定了!非常感谢更改弹性 serach 的版本
    • 当我访问两个文件时,生成的 json 格式符合预期。 {"Book_Id":"102","Review_Text":"DescentRead"},{"Book_Id":"102","Review_Text":"儿童版。"},{"Book_Id":"103","Review_Text" :"Great"} 是否可以根据 id 将特定字段的多个值聚合到一个数组中,例如:[ { Book_Id: 102, Review_Text: [ "DescentRead", "For Kids", ....], { Book_Id:103,评论:[“很棒”]}]
    • 不直接在源中,但您可以通过使用聚合获得语义等效的响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2018-08-01
    • 2017-12-24
    • 2020-05-09
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多