我需要从elasticseatch数据库中获取分析的文本。我知道我可以使用analyze API将分析器应用于任何文本,但是,由于在索引编制过程中已经分析了文本,因此应该有办法访问分析的数据。
以下是我想使用analyze API和Python Elasticsearch
做的事情res = es.indices.analyze(index=app.config['ES_ARXIV_PAPER_INDEX'],
body={"char_filter": ["html_strip"],
"tokenizer" : "standard",
"filter" : ["lowercase", "stop", "snowball"],
"text" : text})
tokens = []
for token in res['tokens']:
tokens.append(token['token'])
print("tokens = ", tokens)
我注意到这个程序实际上很慢。因此,直接从索引数据中获取数据应该更快。
答案 0 :(得分:1)
使用termvectors api应该完成这项工作,但是你必须指定每个条目的id,并且必须启用它(因为存储了信息)。如果您不想这样,那么您已经在使用正确的方法。
以下示例:
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"my_field": {
"type": "text"
}
}
}
}
}
POST my_index/my_type/1
{
"my_field": "this is a test"
}
GET /my_index/my_type/1/_termvectors?fields=*
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-termvectors.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/term-vector.html