首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在elasticsearch-py中提供"script“参数

在elasticsearch-py中提供"script“参数
EN

Stack Overflow用户
提问于 2022-07-11 11:13:48
回答 2查看 36关注 0票数 0

我试图在curl中复制下面的elasticsearch-py突击队

代码语言:javascript
复制
curl -XGET "localhost:9200/my-exact-knn-index/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "script_score": {
      "query" : {
        "bool" : {
          "filter" : {
            "range" : {
              "my-price" : {
                "gte": 0
              }
            }
          }
        }
      },
      "script": {
        "source": "\n          double value = dotProduct(params.query_vector, 'my-product-vector');\n          return sigmoid(1, Math.E, -value); \n        ",
        "params": {
          "query_vector": [-0.5, 90.0, -10, 14.8, -156.0]
        }
      }
    }
  }
}

但是我很难理解如何为index.search()调用提供“脚本”部分。我尝试在query参数和body参数(现在不推荐)中提供它,但是它给了我一个BadRequestError

代码语言:javascript
复制
query_body = {
    "script_score": {
      "script": {
        "source": "\n          double value = dotProduct(params.query_vector, '\''my-product-vector'\'');\n          return sigmoid(1, Math.E, -value); \n        ",
        "params": {
          "query_vector": [-0.5, 90.0, -10, 14.8, -156.0]
        }
      }
    }
  }


search_results = client.search(index="my-exact-knn-index", query=query_body)

>>> BadRequestError: BadRequestError(400, 'illegal_argument_exception', 'Required [query]')

知道该怎么做吗?

EN

回答 2

Stack Overflow用户

发布于 2022-07-11 11:19:17

就快到了,您只需要一个query部分:

代码语言:javascript
复制
query_body = {
    "script_score": {
      "query": {                   <----- add this
          ....
      },
      "script": {
        "source": "\n          double value = dotProduct(params.query_vector, '\''my-product-vector'\'');\n          return sigmoid(1, Math.E, -value); \n        ",
        "params": {
          "query_vector": [-0.5, 90.0, -10, 14.8, -156.0]
        }
      }
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2022-07-11 11:43:49

我做了以下几件事,让它发挥作用:

代码语言:javascript
复制
query_body = {
    "script_score": {
      "query" : {
        "bool" : {
          "filter" : {
            "range" : {
              "my-price" : {
                "gte": 0
              }
            }
          }
        }
      },
      "script": {
        "source": "\n          double value = dotProduct(params.query_vector, 'my-product-vector');\n          return sigmoid(1, Math.E, -value); \n        ",
        "params": {
          "query_vector": [-0.5, 90.0, -10, 14.8, -156.0]
        }
      }
    }
}

search_results = client.search(index="my-exact-knn-index", query=query_body)

所以query不得不紧跟在script_score之后。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72937655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档