如何从elasticsearch数据库中获取分析的文本

时间:2018-02-10 01:03:30

标签: elasticsearch

我需要从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)

我注意到这个程序实际上很慢。因此,直接从索引数据中获取数据应该更快。

1 个答案:

答案 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