В своих целях я никогда не использую termvector
, потому что я получаю статистику после другой обработки, поэтому я использую mtermvector
. Это то же самое, что и termvector
, но оно работает со списком идентификаторов. Если у вас есть список всех идентификаторов ваших документов, которые соответствуют «небу», вы можете действовать следующим образом:
from elasticsearch import Elasticsearch
es = Elasticsearch()
index = "abc"
my_doc_type ="your_doc_type"
ids = []
result = es.search(index="abc", doc_type=my_doc_type, body={"query": {"term": {"field": "sky"}}})
for res in result['hits']['hits']:
ids.append(res['_id'])
for doc in es.mtermvectors(index=index,doc_type=doc_type,body=dict(ids=ids,parameters=dict(term_statistics=True,field_statistics=True,fields=fields)))['docs']:
fields = doc['term_vectors']
terms = field['terms']
tf = vec["term_freq"]
df = vec["doc_freq"]