http 400错误elasticsearch - 试验以检索包含数组中任何关键字的文档



我在文件中写了大量关键字。我将它们放在数组中,并试图为数组中的每个项目运行查询,并检索具有任何关键字的文档。它向我展示了仅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"
               }
             }
          }

最新更新