0
会社の下に18レコードがありますが、私はそれらから3レコードしか見ることができません。以下は私のクエリとPythonコードです。弾性検索からすべてのレコードを表示する方法。私はデータベースから正確に3レコードを検索することができます、弾性検索
{
"query": {
"nested": {
"inner_hits": {
"_source": [
"name",
"country",
"_matched_experiences.role"
]
},
"path": "socials",
"query": {
"match": { "socials._has_email": "true"
}
}
}
},
"_source": [
"com_name"
]
}
以下は私のPythonコードです。
with open(OUTPUT_FILENAME_1, "a") as f1:
csv_writer_1 = csv.writer(f1)
csv_writer_1.writerow(["company_name","name","country","role"])
query_dictionary = {above query}
scroll = elasticsearch.helpers.scan(es, query=query_dictionary, index=companydirectory, scroll='60m', size=800)
for res in scroll:
try:
record_fields = res["_source"]
name = ""
com_name = ""
company_name = record_fields.get("com_name") #from the ES
name_record_fields = res["inner_hits"]["social_contacts"]["hits"]["hits"]
for j in name_record_fields:
name = j['_source']['name'] #from ES
k = j['_source']['_matched_experiences']
role = k[0].get('role')
country = j['_source']['country']
print company_name,name,validated_email_fromES, function_id,level_id, country, company_name,role
# csv_writer_1.writerow([company_name.encode('utf8'),name.encode('utf8'),country,role.encode('utf8')])
except Exception as e1:
pass
これは、ESからの出力例である:
"_source": {
"company_name": "Rothborns"
},
"inner_hits": {
"social_contacts": {
"hits": {
"total": 18,
"max_score": 9.87977,
"hits": [
{
"_type": "comp_directory",
"_id": "MC9MY",
"_nested": {
"field": "socials",
"offset": 36
},
"_score": 9.787,
"_source": {
"country": "SA",
"name": "warner Pauli",
"_has_email": true,
"_matched_experiences": [
{
"role": "Financial Controller"
}
]
}
合計レコードはRothborns 18です。しかし、出力ファイルにはRothbornsのレコードが3つしかありません。
助けてください。ありがとう。
ありがとう@Val。会社に100人以上の従業員がいるとすれば、どうすればそれらを集めることができますか? 「サイズ」のような可能性はありますか? – Niveram
また、エラーが発生します** elasticsearch.helpers.ScanError:40のうち2つのシャードでスクロール要求が失敗しました** – Niveram
デフォルトでは、取得できる最大サイズは10000です。これは私が推測するほとんどの企業にとって十分です。 – Val