我想模拟SQL的IN,所以我使用了术语过滤器,但术语不支持通配符,例如在" * egypt *"中添加astrisck。
那么如何实现以下查询?
PS:我正在使用elastica
{
"query": {
"bool": {
"should": [
{
"terms": {
"country_name": [
"*egypt*",
"*italy*"
]
}
}
]
}
},
"sort": [
{
"rank": {
"order": "desc"
}
}
]
}
答案 0 :(得分:1)
terms
查询不支持通配符。您可以改为使用match
或wildcard
查询。如果您的问题是要过滤的多个值,则可以在should
内组合查询,因此它看起来像这样
{
"query": {
"bool": {
"should": [
{
"wildcard": {
"country_name": "*egypt*"
}
},
{
"wildcard": {
"country_name": "*italy*"
}
}
]
}
},
"sort": [
{
"rank": {
"order": "desc"
}
}
]
}