0
我想知道如何结束第一个查询失败,而第二个匹配。字段可搜索但不可过滤
这不符合
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"and": [
{
"terms": {
"registration_references": ["impedit-40aa"]
}
},
{"term": {"is_deleted": false}}
]
}
}
}
}
这符合
{
"query": {
"filtered": {
"query": {
"match": {"registration_references": "impedit-40aa"}
},
"filter": {"term": {"is_deleted": false}}
}
}
}
你有什么遗漏的线索?
第一个使用“术语”查询(即输入未分析的地方),而第二个使用“匹配”查询(即分析输入的地方)。这很可能是'registration_references'字段是一个分析字符串,对吧? – Val
impedit-40aa将由默认分析器分隔,以便通过精确值匹配40aa过滤器匹配并且不会找到。只是为了理解尝试通过使用过滤器的impedit进行搜索。如果您必须使用过滤器匹配确切值,请更改字段的分析以便不被分析 –
@Val,正确。问题在于'registration_references'被分析。 @Waldemar确切。没有连字符,它可以工作。谢谢你们 ! –