我创建了名为“testindex”的索引和三种类型,称为type1,type2,type3。我需要这三种类型的过滤数据。我这样过滤了。
GET testindex/type1,type2,type3/_search
{"query":{
"filtered":{
"query":{
"match_phrase_prefix":{"title":"c"}
},
"filter":{
"bool":{
"must":[
{
"term":{
"status": "1"
}
}
]
}
}
}
}
这样可以正常使用,但问题是 type3 没有状态字段。我需要考虑仅针对type1和type2而不针对type3进行过滤。我需要帮助来解决这个问题。
答案 0 :(得分:3)
执行此操作的一种方法是使用基本上选择的or
过滤器:
test1
test2
或status = 1
类型的文档
test3
的文档,status
字段此查询应该有效:
{
"query": {
"filtered": {
"query": {
"match_phrase_prefix": {
"title": "h"
}
},
"filter": {
"or": [
{
"bool": {
"must": [
{
"term": {
"status": "1"
}
},
{
"terms": {
"_type": [
"test1",
"test2"
]
}
}
]
}
},
{
"term": {
"_type": "test3"
}
}
]
}
}
}
}