API 在调用 json out 时返回 null
API returning null while invoking json out
代码如下
我创建了一个弹性搜索域。
通过lambda function
将文档推送到索引为my-index的elasticsearch
https://search-xx.us-east-1.es.amazonaws.com/my-index/_search
我做了什么
我创建了一个 api (post)
需要做什么?
如何通过 lambda 函数从弹性搜索索引中获取数据到 api?
我的return为空
生成弹性搜索的COde
- 如何创建包
1.create 本地环境
2.install 必要的库(elasticsearch、requests、requests_aws4auth、boto3)使用 pip
3.create 文件在 env\Lib\site-packages\ 内 lambda_function.py 并添加以下代码
4.Zip 上述文件夹并将其命名为 lambda_function.zip 并上传到 lambda 函数,您在其中创建具有必要 IAM 角色的函数
import boto3
import json
from requests_aws4auth import AWS4Auth
from elasticsearch import Elasticsearch, RequestsHttpConnection
session = boto3.session.Session()
credentials = session.get_credentials()
s3 = session.resource('s3')
bucket = s3.Bucket('test20220elastic')
awsauth = AWS4Auth(credentials.access_key,
credentials.secret_key,
session.region_name, 'es',
session_token=credentials.token)
es = Elasticsearch(
['https://search-testelastic-2276kyz2u4l3basec63onfq73a.us-east-1.es.amazonaws.com'],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection
)
def lambda_handler(event, context):
es.cluster.health()
es.indices.create(index='my-index-1', ignore=400)
r = [{'Name': 'Dr. Christopher DeSimone', 'Specialised and Location': 'Health'},
{'Name': 'Dr. Tajwar Aamir (Aamir)', 'Specialised and Location': 'Health'},
{'Name': 'Dr. Bernard M. Aaron', 'Specialised and Location': 'Health'}]
for e in enumerate(r):
es.index(index="my-index-1", body=e[2])
result = es.search(index="my-index-1", body={"query": {"match_all": {}}})
bucket.put_object(Body=json.dumps(result),Key="my_result.json",ContentType="application/json")
{
'statusCode': 200,
#'body': json.dumps('API INVOKES!')
'body':result
}
以下是my-index中的内容
{"took":2,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":3,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"my-index_1","_type":"_doc","_id":"elqrJHMB10jKFvejVaNM","_score":1.0,"_source":{"Name":"Dr. Christopher DeSimone","Specialised and Location":"Health"}},{"_index":"my-index_1","_type":"_doc","_id":"e1qrJHMB10jKFvejVqMK","_score":1.0,"_source":{"Name":"Dr. Tajwar Aamir (Aamir)","Specialised and Location":"Health"}},{"_index":"my-index_1","_type":"_doc","_id":"fFqrJHMB10jKFvejVqMR","_score":1.0,"_source":{"Name":"Dr. Bernard M. Aaron","Specialised and Location":"Health"}}]}}
return missing in the code
import boto3
import json
from requests_aws4auth import AWS4Auth
from elasticsearch import Elasticsearch, RequestsHttpConnection
session = boto3.session.Session()
credentials = session.get_credentials()
s3 = session.resource('s3')
bucket = s3.Bucket('test20220elastic')
awsauth = AWS4Auth(credentials.access_key,
credentials.secret_key,
session.region_name, 'es',
session_token=credentials.token)
es = Elasticsearch(
['https://search-testelastic-2276kyz2u4l3basec63onfq73a.us-east-1.es.amazonaws.com'],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection
)
def lambda_handler(event, context):
es.cluster.health()
es.indices.create(index='my-index-1', ignore=400)
r = [{'Name': 'Dr. Christopher DeSimone', 'Specialised and Location': 'Health'},
{'Name': 'Dr. Tajwar Aamir (Aamir)', 'Specialised and Location': 'Health'}]
for e in enumerate(r):
es.index(index="my-index-1", body=e[1])
result = es.search(index="my-index-1", body={"query": {"match_all": {}}})
bucket.put_object(Body=json.dumps(result),Key="my_result.json",ContentType="application/json")
return{
'statusCode': 200,
#'body': json.dumps('API INVOKES!')
'body':result
}
代码如下
我创建了一个弹性搜索域。
通过
将文档推送到索引为my-index的elasticsearchlambda function
https://search-xx.us-east-1.es.amazonaws.com/my-index/_search
我做了什么
我创建了一个 api (post)
需要做什么?
如何通过 lambda 函数从弹性搜索索引中获取数据到 api?
我的return为空
生成弹性搜索的COde
- 如何创建包 1.create 本地环境
2.install 必要的库(elasticsearch、requests、requests_aws4auth、boto3)使用 pip
3.create 文件在 env\Lib\site-packages\ 内 lambda_function.py 并添加以下代码
4.Zip 上述文件夹并将其命名为 lambda_function.zip 并上传到 lambda 函数,您在其中创建具有必要 IAM 角色的函数
import boto3
import json
from requests_aws4auth import AWS4Auth
from elasticsearch import Elasticsearch, RequestsHttpConnection
session = boto3.session.Session()
credentials = session.get_credentials()
s3 = session.resource('s3')
bucket = s3.Bucket('test20220elastic')
awsauth = AWS4Auth(credentials.access_key,
credentials.secret_key,
session.region_name, 'es',
session_token=credentials.token)
es = Elasticsearch(
['https://search-testelastic-2276kyz2u4l3basec63onfq73a.us-east-1.es.amazonaws.com'],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection
)
def lambda_handler(event, context):
es.cluster.health()
es.indices.create(index='my-index-1', ignore=400)
r = [{'Name': 'Dr. Christopher DeSimone', 'Specialised and Location': 'Health'},
{'Name': 'Dr. Tajwar Aamir (Aamir)', 'Specialised and Location': 'Health'},
{'Name': 'Dr. Bernard M. Aaron', 'Specialised and Location': 'Health'}]
for e in enumerate(r):
es.index(index="my-index-1", body=e[2])
result = es.search(index="my-index-1", body={"query": {"match_all": {}}})
bucket.put_object(Body=json.dumps(result),Key="my_result.json",ContentType="application/json")
{
'statusCode': 200,
#'body': json.dumps('API INVOKES!')
'body':result
}
以下是my-index中的内容
{"took":2,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":3,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"my-index_1","_type":"_doc","_id":"elqrJHMB10jKFvejVaNM","_score":1.0,"_source":{"Name":"Dr. Christopher DeSimone","Specialised and Location":"Health"}},{"_index":"my-index_1","_type":"_doc","_id":"e1qrJHMB10jKFvejVqMK","_score":1.0,"_source":{"Name":"Dr. Tajwar Aamir (Aamir)","Specialised and Location":"Health"}},{"_index":"my-index_1","_type":"_doc","_id":"fFqrJHMB10jKFvejVqMR","_score":1.0,"_source":{"Name":"Dr. Bernard M. Aaron","Specialised and Location":"Health"}}]}}
return missing in the code
import boto3
import json
from requests_aws4auth import AWS4Auth
from elasticsearch import Elasticsearch, RequestsHttpConnection
session = boto3.session.Session()
credentials = session.get_credentials()
s3 = session.resource('s3')
bucket = s3.Bucket('test20220elastic')
awsauth = AWS4Auth(credentials.access_key,
credentials.secret_key,
session.region_name, 'es',
session_token=credentials.token)
es = Elasticsearch(
['https://search-testelastic-2276kyz2u4l3basec63onfq73a.us-east-1.es.amazonaws.com'],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection
)
def lambda_handler(event, context):
es.cluster.health()
es.indices.create(index='my-index-1', ignore=400)
r = [{'Name': 'Dr. Christopher DeSimone', 'Specialised and Location': 'Health'},
{'Name': 'Dr. Tajwar Aamir (Aamir)', 'Specialised and Location': 'Health'}]
for e in enumerate(r):
es.index(index="my-index-1", body=e[1])
result = es.search(index="my-index-1", body={"query": {"match_all": {}}})
bucket.put_object(Body=json.dumps(result),Key="my_result.json",ContentType="application/json")
return{
'statusCode': 200,
#'body': json.dumps('API INVOKES!')
'body':result
}