我正在尝试使用python脚本从弹性搜索中检索数据,我只需要针对特定值的数据。
POST _search
{
"sort": [
{
"dimensions.memberId.string_value": {
"order": "desc"
}
}
],
"from": 0,
"size": 20,
"fields": [
"dimensions.memberId.string_value",
"measures.ce_timeStamp"
],
"query": {
"bool": {
"must": [
{
"term": {
"eventType": "GG"
}
},
{
"term": {
"corporateId": "abc"
}
},
{
"terms": {
"memberId.string_value": ["127281961", "127274705"]
}
},
{
"terms": {
"status.string_value": ["B", "P", "C", "A"]
}
}
]
}
}
}
这是我的实际查询,我想将memberIds作为变量发送到python中。
我已将整个查询构建为变量,如下所示:
queryPart1 = " {\"sort\": [ \
{ \
\"dimensions.memberId.string_value\": { \
\"order\": \"desc\" \
} \
}\
],\
\"from\": 0, \
\"size\": 20, \
\"fields\": [ \
\"dimensions.memberId.string_value\", \
\"measures.ce_timeStamp\" \
], \
\"query\": { \
\"bool\": { \
\"must\": [ \
{ \
\"term\": { \
\"eventType\": \"GG\" \
} \
}, \
{ \
\"term\": { \
\"corporateId\": \"ABC\" \
} \
}, \
{ \
\"terms\": { \
\"dimensions.memberId.string_value\": "
queryPart2 = "} \
}, \
{ \
\"terms\": { \
\"dimensions.1_shipment_status.string_value\": [\"B\", \"P\", \"C\", \"A\"] \
} \
} \
] \
} \
} \
}"
querybody = queryPart1+varMemberId+queryPart2
和varMemberID是具有连接值的变量
这对我不起作用。你能指出这种方法有什么问题吗?
谢谢!
答案 0 :(得分:0)
您正在进行的请求采用JSON字符串形式。 Python提供了json
模块来有效地处理JSON数据。您可以使用json.dumps()
将dict / list对象转换为JSON字符串。
例如:
import json
my_variable = 33 # variable you want to pass
params = {
'param1': 'value_1',
'param2': 'value_2',
'param3': my_variable # your variable
}
json_str = json.dumps(params)
# `json_str` will hold the value in the form of json string as:
# '{"param3": 33, "param2": "value_2", "param1": "value_1"}'
# ^ value of your variable
答案 1 :(得分:0)
尝试类似:
import json
list = ["value1", "value2"]
\"dimensions.memberId.string_value\": + json.dumps(list) + queryPart2
但是,我建议查看elasticsearch客户端。它将使您的代码更简单,更容易调试。