我使用elasticsearch-py连接到包含300多万个文档的ES数据库.我想返回所有文档,以便我可以抽象数据并将其写入csv.我能够使用以下代码轻松完成10个文档(默认返回).
es=Elasticsearch("glycerin")
query={"query" : {"match_all" : {}}}
response= es.search(index="_all", doc_type="patent", body=query)
for hit in response["hits"]["hits"]:
print hit
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我尝试实现扫描和滚动时,我可以获得所有问题.我尝试了两种不同的方法但没有成功.
方法1:
scanResp= es.search(index="_all", doc_type="patent", body=query, search_type="scan", scroll="10m")
scrollId= scanResp['_scroll_id']
response= es.scroll(scroll_id=scrollId, scroll= "10m")
print response
Run Code Online (Sandbox Code Playgroud)
之后scroll/它给出滚动id然后结束?scroll=10m (Caused by <class 'httplib.BadStatusLine'>: ''))
方法2:
query={"query" : {"match_all" : {}}}
scanResp= helpers.scan(client= es, query=query, scroll= "10m", index="", doc_type="patent", timeout="10m")
for resp in scanResp:
print "Hiya"
Run Code Online (Sandbox Code Playgroud)
如果我在for循环之前打印出scanResp,我得到了<generator object scan at 0x108723dc0>.因此,我相对肯定我以某种方式弄乱了我的卷轴,但我不知道在哪里或如何解决它.
结果:
再次,scroll/它给出滚动ID后,然后结束?scroll=10m (Caused by <class 'httplib.BadStatusLine'>: '')) …
我在ES数据库中有一堆公司数据.我想要计算每个文件中出现的文件的数量,但是我在聚合查询时遇到了一些问题.我希望排除诸如"公司"或"公司"之类的术语 到目前为止,我已经能够按照以下代码一次成功完成一个任期.
{
"aggs" : {
"companies" : {
"terms" : {
"field" : "Companies.name",
"exclude" : "corporation"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
哪个回报
"aggregations": {
"assignee": {
"buckets": [
{
"key": "inc",
"doc_count": 375
},
{
"key": "company",
"doc_count": 252
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够做类似的事情
{
"aggs" : {
"companies" : {
"terms" : {
"field" : "Companies.name",
"exclude" : ["corporation", "inc.", "inc", "co", "company", "the", "industries", "incorporated", "international"],
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我找不到一种不会引发错误的方法
我查看了ES文档中聚合的"术语"部分,并且只能找到单个排除的示例.我想知道是否可以排除多个术语,如果是,那么这样做的正确语法是什么.
注意:我知道我可以将字段设置为"not_analyzed"并获取完整公司名称的分组,而不是拆分名称.但是,由于分析允许存储桶更容忍名称变化(即微软公司和微软公司),我对此犹豫不决.
我最近开始使用Neo4j并且正在努力了解事情是如何运作的.我正在尝试在我的脚本中创建的节点之间创建关系.我发现的cypher查询看起来应该可以工作,但我不知道如何获取id来替换#s
START a= node(#), b= node(#)
CREATE UNIQUE a-[r:POSTED]->b
RETURN r
Run Code Online (Sandbox Code Playgroud) 我有一组 PCAP 文件,我需要检索所有 ip。我找到了这个链接,目前一直在使用这个命令。
tshark_path + " -r " + infile + " -T fields -e ip.dst | sort | uniq
Run Code Online (Sandbox Code Playgroud)
问题是,这似乎是很慢,还时不时返回的东西,看起来像这样:128.219.232.12,10.78.0.131。我的问题是是否有更好的方法来做到这一点,它可以运行得更快、更准确。
同样值得注意的是,我的代码是在 python 中的。