所以我正在使用plot(y::myfoo)
来搜索&通过我的 localhost 上的 index 查询数据。
elasticsearch_dsl
我得到以下结果data.txt,但这并不打印整个数据,它只打印最初的10个数据条目,因为它实际上有1016个条目。我的问题: -
1.)扫描和执行功能之间的差异
2。)像
from pprint import pprint es = elasticsearch.Elasticsearch('http://localhost:9200') s = elasticsearch_dsl.Search(using=es, index='your_index_name') result1 = s.execute() #using the execute method result2 = s.scan() # using the scan method pprint(result1.to_dict()) #check data.txt file for the output which prints only the initial 10 entries of data count1 = 0 for i in result1: print(i.Author) # will print Author name. look data.txt #print(i._index) #gives error count1+=1 print count1 #prints 10 i.e. only initial 10 entries count2 = 0 for i in result2: count2+=1 print count2 #prints 1016 i.e. all the 1016 entries
有execute
函数来打印原始数据,to_dict()
方法是否有类似的函数来打印数据?3。)为什么
scan
只提供最初的10个条目?4.。)另外,如果你看一下 data.txt 文件,当我想得到作者姓名时,它有一个关键字
execute()
,所以我可以通过运行循环并执行Author
来访问它,但我无法访问print(i.Author)
值。_index
会出错。如何获得这个价值?
我一直在努力,并且已经做了很多谷歌搜索,并且使用我的代码玩了很多,但我仍然无法知道这是如何工作的。如果有人能提供帮助,我会很高兴。
答案 0 :(得分:2)
为了最好地理解差异,我建议你看一下elasticsearch本身。 execute
(或只是迭代Search
个对象)只运行_search
API(0)。另一方面,scan
是scan/scroll
API(1)的包装器,它是一个“导出”API,旨在从弹性搜索中卸载所有数据,而不仅仅是热门搜索。
您可以通过_id
属性访问_index
或meta
等所有元数据,因此:i.meta.id
和i.meta._index
0 - http://nocf-www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html
1 - http://nocf-www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html