我的弹性搜索查询是
{
"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": {}
}
它回归了什么。
如果您的示例中的查询是正确的,那么第一个查询没有匹配时第二个查询可能会命中是合法的。这是因为第二个查询中的条件与第一个查询的任何should
案例都不匹配。只需查看第二个查询的"currency.keyword": "USD"
条件:在第一个查询中无法匹配此条件。