试图访问我的 ElasticSearch 文档中分析/标记化的文本。
我知道您可以使用分析 API根据您的分析模块分析任意文本。因此,我可以将文档中的数据复制并粘贴到分析 API 中,以查看它是如何被标记化的。
不过,这似乎是不必要的耗时。有没有办法指示 ElasticSearch 在搜索结果中返回标记化的文本?我浏览了文档并没有找到任何东西。
试图访问我的 ElasticSearch 文档中分析/标记化的文本。
我知道您可以使用分析 API根据您的分析模块分析任意文本。因此,我可以将文档中的数据复制并粘贴到分析 API 中,以查看它是如何被标记化的。
不过,这似乎是不必要的耗时。有没有办法指示 ElasticSearch 在搜索结果中返回标记化的文本?我浏览了文档并没有找到任何东西。
这个问题有点老了,但也许我认为需要额外的答案。
在 ElasticSearch 1.0.0 中添加了Term Vector API,它使您可以直接访问 ElasticSearch 在每个文档的底层存储的令牌。API 文档对此不是很清楚(仅在示例中提到),但为了使用 API,您必须首先在映射定义中指出您希望term_vector
在每个字段上存储具有属性的术语向量。
看看这个其他答案:elasticsearch - Return the tokens of a field。不幸的是,它需要使用提供的脚本即时重新分析您的字段内容。
应该可以编写一个插件来公开此功能。想法是将两个端点添加到:
您可能想要使用脚本,但是您的服务器应该启用脚本。
curl 'http://localhost:9200/your_index/your_type/_search?pretty=true' -d '{
"query" : {
"match_all" : { }
},
"script_fields": {
"terms" : {
"script": "doc[field].values",
"params": {
"field": "field_x.field_y"
}
}
}
}'
允许脚本的默认设置取决于弹性搜索版本,因此请从官方文档中查看。