我正在尝试使用弹性搜索在通配符查询上添加复杂的过滤器。过滤器似乎正在工作,但是,结果没有考虑到通配符。这是可能的还是可以替代通配符过滤器?查询如下:
{
"query": {
"filtered": {
"query": {
"wildcard": {
"name": "*frog*"
},
"filter": {
"bool": {
"must": {
"term": {
"is_animal": false
}
}
},
"or": [
{
"terms": {
"reptiles.codes": [
27
]
}
},
{
"nested": {
"path": "owners",
"query": {
"bool": {
"should": {
"term": {
"pets": "cat"
}
}
}
}
}
},
{
"nested": {
"path": "locations",
"query": {
"bool": {
"should": {
"term": {
"home": true
}
}
}
}
}
}
]
}
}
}
}
}
或者,我可以在我的“bool”中添加通配符作为过滤器:{“must”:....}}?
答案 0 :(得分:1)
你绝对应该在你的分析仪中使用ngram标记过滤器,而不是运行一个非常慢的通配符,特别是如果它以星形开头,就是这里的情况。
话虽这么说,但我不明白为什么通配符部分不适用于此处。你有可能用一个完整的例子重现你的案例吗?可能你有特定的分析仪吗?