【问题标题】:Pass JSON response of REST API as input data into APACHE SOLR将 REST API 的 JSON 响应作为输入数据传递到 APACHE SOLR
【发布时间】:2019-01-23 15:33:30
【问题描述】:

我有一个使用 Flask 构建的 REST API。它有 GET 和 POST 方法。 API 返回 JSON 响应。我希望 SOLR 使用 REST API 的 URL 根据查询对此响应执行搜索并返回相关的搜索结果。

我怎样才能做到这一点? SOLR 是否仅将 JSON file 作为输入,在这种情况下,我需要将端点的响应写入 JSON 文件,将其放在示例文件夹中并将其传递给 SOLR?

【问题讨论】:

    标签: python json apache api solr


    【解决方案1】:

    我希望 SOLR 使用 REST API 的 URL 根据查询对数据(JSON 响应)执行搜索并返回相关搜索结果

    您必须调用 REST API,取回 JSON 响应并将其添加到 Solr 索引。然后您可以使用 Solr 搜索该数据。

    您能告诉我如何实现这一目标吗?有可能吗?

    请查看此文档。它将帮助您索引 JSON 文档。 https://lucene.apache.org/solr/guide/7_1/uploading-data-with-index-handlers.html#solr-style-json

    或者 SOLR 是否仅将 JSON 文件作为输入放在示例文件夹中,在这种情况下,我需要将从我的 RESTAPI 接收到的响应写入 json 文件,将其放在示例文件夹中并将其传递给 SOLR

    这是部分正确的理解,但是您不必将其放在示例文件夹中。您需要发布该 JSON(或按照 Solr 要求的格式格式化 JSON),如上面提供的参考中所示。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      谢谢阿米特!在您共享的链接中,它具有 curl 命令。但我试图用 Python 做到这一点。我找到了解决方案!奇迹般有效。我还嵌入了 cmets 以供进一步解释。

      @app.route('/solrInput', methods = ['POST'])
      def solr_input():
          """Get response data from MongoDB RESTAPI and feed into SOLR for indexing"""
      
          #get mongoDB data from rest api
          input_data = requests.get('http://127.0.0.1:5000/getAllRecords')
          json_data = input_data.json()
      
          #loop through response to fetch the values
          for key, val in json_data.items():
              payload = str(val)
              response = requests.post("http://localhost:8983/solr/techs/update/json/docs?commit=true", data=payload)
      
      if __name__ == "__main__":
          app.run(debug=True)
      

      【讨论】:

        猜你喜欢
        • 2020-05-31
        • 2019-07-01
        • 1970-01-01
        • 2023-03-13
        • 2020-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-12
        相关资源
        最近更新 更多