我是ElasticSearch的新手,目前看来是必须且必须没有搜索条件的类型。 我有以下查询DSL:
curl -XPOST 'localhost:9200/employee/_search?pretty' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}'
现在我的问题是,有什么办法可以优化上面的查询吗? 就像,如果我必须搜索多个must和must_not标准,查询将变得非常大并且难以管理。有什么方法可以将must和must_not结合在一个搜索短语下吗?
答案 0 :(得分:1)
据我所知,你可以使用“should”将几个匹配放在“bool”语句中(不确定为什么它不能直接用于一个“bool”语句):
修改实际上要进行多次匹配,没有太复杂的请求,以下内容应该正常工作:
{
"query": {
"bool":{
"must": [
{"match":{"age":"40"}},
{"match":{"name": "John"}}
]
, "must_not": [
{"match":{"age":"40"}},
{"match":{"name": "John"}}
]
}
}
}
不幸的是,must
和must_not
无法合并