Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elasticsearch无痛获取字符串字段(包含XML)到变量中 - Fatal编程技术网

Elasticsearch无痛获取字符串字段(包含XML)到变量中

Elasticsearch无痛获取字符串字段(包含XML)到变量中,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我试图解析一个包含XML的Elasticsearch字符串字段(名为Request.Body)。此字段包含SOAP请求字符串,如下所示: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="myURL"> <SOAP-ENV:Body> <n

我试图解析一个包含XML的Elasticsearch字符串字段(名为
Request.Body
)。此字段包含SOAP请求字符串,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="myURL">
  <SOAP-ENV:Body>
    <ns1:find>
      <token>myData</token>
      <login>myData</login>
      <language>myData</language>
      <search>myData</search>
      <contains>false</contains>
    </ns1:find>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
此代码始终返回
不匹配

为了调试,我尝试返回
doc['Request.Body'].value
,在本例中,它只返回
1.0
,而不是返回完整的XML

我还尝试使用该代码连接此对象中
列表的值:

def field = doc['Request.Body'].getValues().stream().collect(Collectors.joining(""));
if (field != null) {
  def matcher = /<search>(.*)<\/search>/.matcher(field);
  if (matcher.find()) {
    return matcher.group(1);
  }
  return "No match";
}
return "No field"; 
def field=doc['Request.Body'].getValues().stream().collect(collector.joining(“”));
如果(字段!=null){
def匹配器=/(*)/.matcher(字段);
if(matcher.find()){
返回匹配器组(1);
}
返回“不匹配”;
}
返回“无字段”;
现在,
字段
变量等于包含的XML标记值,但我丢失了XML标记,因此无法使用正则表达式提取数据,与第一个脚本一样,它总是返回
不匹配

所以我的问题是,如何在脚本中的变量中获取字段的完整XML值?为什么Elasticsearch“解析”我的XML


任何帮助都将不胜感激。谢谢。

这是一个老话题,但遇到了同样的问题。我可以通过使用字段定义来解决它:

def field = params._source.Request.Body;
此代码可以从sting字段提取相关信息:

def field = params._source.message;
if (field != null) {
def matcher = /<decisionText>(.*)<\/decisionText>/.matcher(field);
if (matcher.find()) {
return matcher.group(1);
}
return "No match";
}
return "No field";
def field=params.\u source.message;
如果(字段!=null){
def匹配器=/(*)/.matcher(字段);
if(matcher.find()){
返回匹配器组(1);
}
返回“不匹配”;
}
返回“无字段”;
在我的例子中,数据在“message”字段中

def field = params._source.message;
if (field != null) {
def matcher = /<decisionText>(.*)<\/decisionText>/.matcher(field);
if (matcher.find()) {
return matcher.group(1);
}
return "No match";
}
return "No field";