我想在弹性搜索中搜索具有以下查询标记a或b或c的文档。但它总是返回只有c而忽略a或b的文档。任何人都可以帮忙吗?
"filtered": {
"filter": {
"term": {
"tags": ['a','b','c']
}
},
"query": {
match: {
rawText: 'filter'
}
}
}
答案 0 :(得分:7)
在Elasticsearch中,术语与术语过滤器之间存在差异。
术语过滤器:
{
"constant_score" : {
"filter" : {
"term" : { "user" : "kimchy"}
}
}
}
条款过滤器:
{
"constant_score" : {
"filter" : {
"terms" : {
"user" : ["kimchy", "elasticsearch"],
"execution" : "bool",
"_cache": true
}
}
}
}
尝试使用术语过滤器。
答案 1 :(得分:4)
使用 term :所有给定元素必须匹配
请参阅官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/1.6/query-dsl-term-filter.html
或者这个:
使用条款:Min。其中一个给定元素必须匹配
请参阅官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html
您要求使用术语/术语过滤器。在查询中使用术语/术语有另一种解释!