当前位置: 首页 > 面试题库 >

用Python请求查询ElasticSearch不能正常工作

东方河
2023-03-14
问题内容

我正在尝试使用Elastic
Search引擎在mongodbhtml" target="_blank">数据库上进行全文搜索,但是遇到一个问题:无论我提供什么搜索字词(或者如果我使用query1或query2),引擎始终会返回相同的结果。我认为问题出在我提出请求的方式上,但我不知道如何解决。

这是代码:

def search(search_term):
    query1 = {
        "fuzzy" : {
            "art_text" : {
                "value" : search_term,
                "boost" : 1.0,
                "min_similarity" : 0.5,
                "prefix_length" : 0
            }
        },
        "filter": {
            "range" : {
                "published": {
                    "from" : "20130409T000000",
                    "to": "20130410T235959"
                }
            }
        }
    }
    query2 = {
        "match_phrase": { "art_text": search_term }
    }

    es_query = json.dumps(query1)
    uri = 'http://localhost:9200/newsidx/_search'
    r = requests.get(uri, params=es_query)
    results = json.loads( r.text )
    data = [res['_source']['api_id'] for res in results['hits']['hits'] ]
    print "results: %d" % len(data)
    pprint(data)

问题答案:

params参数不适用于正在发送的数据。如果要尝试将数据发送到服务器,则应特别使用data参数。如果您尝试发送查询参数,则不应对它们进行JSON编码,而应将其作为dict传递给params。

我怀疑您的第一个要求应该是:

r = requests.get(uri, data=es_query)

在有人拒绝我投票之前,是的,HTTP / 1.1规范允许数据与GET请求一起发送,是的,请求确实支持它。



 类似资料:
  • 这是我的DUsers类: 正如您所看到的,我定义了几个,除了最后一个需要我的数据库之外,它们都正常工作。为了运行这个查询,我定义了两个函数: 在此之后,我定义了一个路径,后面跟着一个POST请求,该请求应该更新我的数据库,但遗憾的是,它没有更新我的数据库。 有人知道我哪里错了吗?

  • 我有一个对soap Web服务的请求,该服务在SoapUi中运行良好。我想在python脚本中调用此Web服务。 我尝试了一些模块:zeep,泡沫,...但是我总是有一个SSL错误。 以下是信息: https://37.71XXXXXXACONYX?wsdl 基本认证:用户名密码 身份验证类型:抢占式 我在SoapUi中提供了xml。 有人有什么想法吗? 谢谢!! 我试过:

  • 我正在使用Laravel 5.6--Jquery Ajax 我将该操作的返回作为带有数据的部分 我将主标记的内容替换为部分标记 除了当结果计数大于10(分页的断点)时,其他一切都正常工作。 我使用来显示控件

  • 我在将工作cURL调用转换为内部API到python请求调用时遇到了一个问题。 以下是工作旋度调用: 然后,我试图将该调用转换为一个工作python请求脚本在这里: 我得到一个HTTP 401或500错误,这取决于我如何更改headers变量。我不明白的是,我的python请求与cURL请求有何不同。它们都作为同一用户从同一台服务器上运行。 任何帮助都将不胜感激

  • 我正试图在按下某个按钮时弹出一个警报对话框。我首先使用了Android Developer的示例代码而不是'这不起作用,所以我根据在这个站点上发现的情况进行了更改,但是现在我的程序在按下按钮后被迫停止。 就你的知识而言,这是在第二个不同于主要的活动中完成的。不确定这是否重要.... ‘ 碰撞日志:“03-25 19:34:24.373:E/AndroidRuntime(18828):致命异常:ma

  • 2,错误{org.apache.directory.server.LDAP.ldapserver}-ERR_171无法将LDAP服务(10,389)绑定到服务注册表。java.net.BindException:已在使用的地址 请帮忙谢谢 --------提示------------------- JAVA_HOME环境变量设置为/opt/java CARBON_HOME环境变量设置为/mnt/1