我有这个代码,效果很好:
res = es.search(index="myindex",
body={
"from" : 0, "size" : 100, "query": {
"bool": {
"should": [{
"match": { 'p_name': p_name},
"match": { 'p_desc': p_desc},
"match": { 'p_ingr': p_ingr}
}]}}})
但有时候p_desc或p_ingr为空,这些记录的弹性不会搜索。
我可以对这些记录进行弹性搜索吗?
答案 0 :(得分:0)
您可以使用empty
字段在script
上搜索空字符串。试试这个
{
"query": {
"bool": {
"should": [
{
"match": {
"p_name": p_name
}
},
{
"match": {
"p_desc": p_desc
}
},
{
"match": {
"p_ingr": p_ingr
}
},
{
"bool": {
"filter": {
"script": {
"script": "doc['p_desc'].empty || doc['p_ingr'].empty"
}
}
}
}
]
}
}
}
此查询将返回p_desc
或p_ingr
为空字符串的结果,""