使用elasticsearch分析一些文本(使用_analyze端点)。
我看到当有前导连字符时它不会返回json,而是返回其他格式。
尝试搜索有关此内容的文档,但一无所获。 有人能指出我的原因吗?有没有办法强制json输出?以下示例。
感谢。
简短的例子,一个文本是“这是”,另一个是'---------这是'。
这很好用:
% curl -XGET 'localhost:9200/_analyze?analyzer=standard' -d 'this is'
{"tokens":[{"token":"this","start_offset":0,"end_offset":4,"type":"<ALPHANUM>","position":1},{"token":"is","start_offset":5,"end_offset":7,"type":"<ALPHANUM>","position":2}]}
但有领先---它会返回其他格式
% curl -XGET 'localhost:9200/_analyze?analyzer=standard' -d '---------this is'
---
tokens:
- token: "this"
start_offset: 9
end_offset: 13
type: "<ALPHANUM>"
position: 1
- token: "is"
start_offset: 14
end_offset: 16
type: "<ALPHANUM>"
position: 2
答案 0 :(得分:2)
当文档没有说明时,你应该转向最终的&#34;文档&#34;资源,即代码。
从将处理_analyze
调用的主RestAnalyzeAction
REST端点开始,我们可以看到在第87行,它将尝试通过调用{{3来猜测请求体的内容类型}}。该方法依次调用RestActions.guessBodyContentType
,后者我们可以在第156行找到原因,即如果正文以两个连字符开头,则请求被解释为YAML,响应将被格式化为YAML相应
您可以通过将-v
(用于详细)开关添加到curl命令来确认此事实:
curl -v -XGET 'localhost:9200/_analyze?analyzer=standard' -d '---------this is'
您收到的回复会告诉您回复的内容类型为application/yaml
* Connected to localhost (::1) port 9200 (#0)
> GET /_analyze?analyzer=standard HTTP/1.1
> User-Agent: curl/7.37.1
> Host: localhost:9200
> Accept: */*
> Content-Length: 16
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 16 out of 16 bytes
< HTTP/1.1 200 OK
< Content-Type: application/yaml <---- HERE
< Content-Length: 183
<
---
tokens:
- token: "this"
start_offset: 9
end_offset: 13
type: "<ALPHANUM>"
position: 1
- token: "is"
start_offset: 14
end_offset: 16
type: "<ALPHANUM>"
position: 2
答案 1 :(得分:0)
当我在sense插件中尝试相同时,我得到了以下结果
- (void)webViewDidFinishLoad:(UIWebView *)aWebView
{
aWebView.scrollView.scrollEnabled = NO;
CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;
webViewHeight=fittingSize.height;
[tblEventInfo reloadData];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return webViewHeight;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
EventInfo *event = [[EventInfo alloc] init];
event = [arrayEventInfo objectAtIndex:indexPath.section];
NSLog(@"%@", event.event_title);
if(!webViewHTML)
{
webViewHTML = [[UIWebView alloc]init];
webViewHTML.delegate = self;
webViewHTML.backgroundColor = [UIColor clearColor];
webViewHTML.opaque = NO;
webViewHTML.userInteractionEnabled = NO;
[webViewHTML loadHTMLString:event.event_html baseURL: nil];
}
[webViewHTML loadHTMLString:event.event_html baseURL: nil];
webViewHTML.frame = CGRectMake(0, 0, cell.frame.size.width, webViewHeight);
[cell.contentView addSubview:webViewHTML];
return cell;
}