【问题标题】:Elasticsearch Get the values of a field - java APIElasticsearch 获取字段的值 - java API
【发布时间】:2016-04-01 08:16:08
【问题描述】:

大家好,我是 elasticsearch 新手,我正在尝试处理当前出现的错误。所以我只想要一个字段值,例如我在 xml 文件的早期过程中添加的“xmldata”。 xml 被格式化为 json 并成功加载到我的 ES-Server,json 文件是正确的。

这是我的代码:

        Client client = TransportClient.builder().build()
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));

    // GetResponse response = client.prepareGet("store", "xml",
    // xsdid).setFields("xmldata").execute().actionGet();
    GetResponse response = client.prepareGet().setIndex("store").setType("xml").setId(xsdid).setFields("xml").execute().actionGet();

    String id = (String) response.getSource().get("xml");

我正在关注错误:

MapperParsingException[解析失败];嵌套:IllegalArgumentException[格式错误,解析后发现多余数据:START_OBJECT];

如果你需要,我的 XML 看起来像这样:

    <?xml version="1.0" encoding="UTF-8"?><XmlDoc><FunctionResult result="success"><Message>Processed Correct!</Message></FunctionResult>
<billing>
<billing_id>571</billing_id>
<appid>mft</appid>
<senderbtid>20041900-107</senderbtid>
<receiverbtid>20041900-40</receiverbtid>
<messagetype>M_SLSRPT</messagetype>
<messageid>83815</messageid>
<messageprops/>
<tmid>842</tmid>
<tmmsgcnt>0</tmmsgcnt>
<tmmsgtotal>1</tmmsgtotal>
<procdate>2014-12-02T03:10:15.406</procdate>
<xmldata>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48WG1sRG9jPg0KPGJpbGxpbmc+DQo8YmlsbGluZ19pZD41NzE8L2JpbGxpbmdfaWQ+DQo8YXBwaWQ+bWZ0PC9hcHBpZD4NCjxzZW5kZXJidGlkPjIwMDQxOTAwLTEwNzwvc2VuZGVyYnRpZD4NCjxyZWNlaXZlcmJ0aWQ+MjAwNDE5MDAtNDA8L3JlY2VpdmVyYnRpZD4NCjxtZXNzYWdldHlwZT5NX1NMU1JQVDwvbWVzc2FnZXR5cGU+DQo8bWVzc2FnZWlkPjgzODE1PC9tZXNzYWdlaWQ+DQo8bWVzc2FnZXByb3BzLz4NCjx0bWlkPjg0MjwvdG1pZD4NCjx0bW1zZ2NudD4wPC90bW1zZ2NudD4NCjx0bW1zZ3RvdGFsPjE8L3RtbXNndG90YWw+DQo8cHJvY2RhdGU+MjAxNC0xMi0wMlQwMzoxMDoxNS40MDY8L3Byb2NkYXRlPg0KPC9iaWxsaW5nPg0KPC9YbWxEb2M+DQoNCg==</xmldata></billing>
</XmlDoc>

请帮帮我! 谢谢

【问题讨论】:

    标签: java json api elasticsearch field


    【解决方案1】:
    Client client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
    
        GetResponse getResponse = client.prepareGet("database", "xsd", xsdid).execute().actionGet();
    
        Map<String, Object> source = getResponse.getSource();
    

    像这样我得到了完整的 json 文件

    但是有没有更好的方法来获取单个(xmldata)?

    【讨论】:

      猜你喜欢
      • 2016-12-03
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2013-03-02
      相关资源
      最近更新 更多