elasticsearch – 返回字段的标记
如何在结果中返回特定字段的标记
例如,A GET请求
curl -XGET 'http://localhost:9200/twitter/tweet/1'
回报
{ "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_source" : { "user" : "kimchy", "postDate" : "2009-11-15T14:12:12", "message" : "trying out Elastic Search" } }
我想在结果中包含’_source.message’字段的标记
还有另一种方法可以使用以下script_fields脚本:
curl 'http://localhost:9200/test-idx/_search?pretty=true' -d '{ "query" : { "match_all" : { } }, "script_fields": { "terms" : { "script": "doc[field].values", "params": { "field": "message" } } } }'
重要的是要注意,虽然此脚本返回索引的实际术语,但它还会缓存所有字段值,而大型索引可能会占用大量内存。 因此,对于大型索引,从存储的字段或源中检索字段值并使用以下MVEL脚本在运行中再次重新分析它们可能更有用:
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import java.io.StringReader; // Cache analyzer for further use cachedAnalyzer=(isdef cachedAnalyzer)?cachedAnalyzer:doc.mapperService().documentMapper(doc._type.value).mappers().indexAnalyzer(); terms=[]; // Get value from Fields Lookup //val=_fields[field].values; // Get value from Source Lookup val=_source[field]; if(val != null) { tokenStream=cachedAnalyzer.tokenStream(field, new StringReader(val)); CharTermAttribute termAttribute = tokenStream.addAttribute(CharTermAttribute); while(tokenStream.incrementToken()) { terms.add(termAttribute.toString()) }; tokenStream.close(); } terms
此MVEL脚本可以存储为config/scripts/analyze.mvel
并与以下查询一起使用:
curl 'http://localhost:9200/test-idx/_search?pretty=true' -d '{ "query" : { "match_all" : { } }, "script_fields": { "terms" : { "script": "analyze", "params": { "field": "message" } } } }'
如果您指的是已编制索引的令牌,则可以在消息字段中创建术语构面 。 增加size
值以获取更多条目,或设置为0
以获取所有条目。
Lucene提供了存储术语向量的能力,但到目前为止还没有办法使用elasticsearch访问它(据我所知)。
你为什么需要那个? 如果您只想查看要编制索引的内容,可以查看analyze api 。
- 读取Elasticsearch插件中的文件
- 使用Apache HttpComponents Client签署AWS HTTP请求
- NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor在Elastic Search jar上进行conflits
- ElasticSearch索引存在不可行/可靠
- 如何在内部java api或jest api中获取弹性搜索索引的类型名称
- 使用Java API更新ElasticSearch索引中的嵌套字段
- 如何在我的java应用程序中嵌入elasticsearch 5.1?
- 在弹性搜索高级客户端中为JAVA添加身份validation
- elasticsearch NodeBuilder与TranportClient