我的elasticsearch查询是
{
"bool": {
"should": [
{
"bool": {
"must": [
{
"wildcard": {
"currency.keyword": "*oke*"
}
},
{
"wildcard": {
"search_tags.keyword": "*BTC*USDT"
}
},
{
"term": {
"record_type.keyword": "market"
}
}
]
}
},
{
"bool": {
"must": [
{
"wildcard": {
"currency.keyword": "*BTC*"
}
},
{
"wildcard": {
"search_tags.keyword": "*oke*USDT"
}
},
{
"term": {
"record_type.keyword": "market"
}
}
]
}
},
{
"bool": {
"must": [
{
"wildcard": {
"currency.keyword": "*USDT*"
}
},
{
"wildcard": {
"search_tags.keyword": "*oke*BTC"
}
},
{
"term": {
"record_type.keyword": "market"
}
}
]
}
}
]
},
"from": 0,
"size": 20
}
它从我的索引中返回null。
但是当我的查询是:
{
"query": {
"bool": {
"must": [
{
"wildcard": {
"search_tags.keyword": "okexBTC*"
}
},
{
"wildcard": {
"currency.keyword": "USD"
}
},
{
"term": {
"record_type.keyword": "market"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}
它返回一些东西。
答案 0 :(得分:0)
如果您的示例中的查询正确,则第二个查询可能具有匹配,而第一个查询则没有匹配是合法的。这是因为第二个查询中的条件与第一个查询的should
个情况都不匹配。只需查看第二个查询的"currency.keyword": "USD"
条件:该条件在第一个查询中是无法匹配的。