我在文件中写了大量关键字。我将它们放在数组中,并试图为数组中的每个项目运行查询,并检索具有任何关键字的文档。它向我展示了仅50个文件的返回文档数量,最后我遇到了一些错误。这是我的代码:
关键字的子集:
C0001396 SYNDROME STOKES-ADAMS
C0001396 Syndrome, Adams-Stokes
C0001396 Syndrome, Stokes-Adams
C0002962 3-12 ANGINAL SYNDROMES
C0002962 ANGINA
代码:
from elasticsearch import Elasticsearch
import json
count=0
keyword_array = []
es = Elasticsearch(['http://IP:9200/'])
with open('localDrive\C0577785C.txt') as my_keywordfile:
for keyword in my_keywordfile.readlines():
keyword_ex=keyword[9:]
print(keyword_ex)
keyword_array.append(keyword_ex.strip().strip("'"))
with open('localDrive\out.txt', 'wb') as f:
for x in keyword_array:
doc = {
"from" : 0, "size" : 1000000,
"query":{
"query_string":{
"fields" : ["description", "title"],
"query" : x
}
}
}
res = es.search(index='INDEXED_REPO', body=doc)
print("Got %d Hits:" % res['hits']['total'])
count += 1
print(count)
f.write(json.dumps(res).encode("utf-8"))
f.flush()
f.close()
错误:
GET http://INDEX_REPO/indexed/_search [status:400 request:0.012s]
Traceback (most recent call last):
File
"localDrive/PycharmProjects/extract_keywords/elastic_serach5.py", line
32, in <module>
res = es.search(index='INDEXED_REPO', body=doc)
File "......LocalProgramsPythonPython36-32libsite-
packageselasticsearchclientutils.py", line 73, in _wrapped
return func(*args, params=params, **kwargs)
File "....AppDataLocalProgramsPythonPython36-32libsite-
packageselasticsearchclient__init__.py", line 623, in search
doc_type, '_search'), params=params, body=body)
File "......AppDataLocalProgramsPythonPython36-32libsite-
packageselasticsearchtransport.py", line 312, in perform_request
status, headers, data = connection.perform_request(method, url, params,
body, ignore=ignore, timeout=timeout)
File "......AppDataLocalProgramsPythonPython36-32libsite-
packageselasticsearchconnectionhttp_urllib3.py", line 128, in
perform_request
self._raise_error(response.status, raw_data)
File "......AppDataLocalProgramsPythonPython36-32libsite-
packageselasticsearchconnectionbase.py", line 125, in _raise_error
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code,
error_message, additional_info)
elasticsearch.exceptions.RequestError: <exception str() failed>
知道为什么会发生吗?谢谢,
lasticsearch查询的格式不正确。我将其更改为以下内容,它起作用了!
doc = {
"query": {
"multi_match": {
"query": x,
"type": "phrase",
"fields": ["title", "description"],
"operator": "and"
}
}
}