我是Elasticsearch的新手,而Lookig当前是必不可少的,并且必须_not类型的搜索标准。我有以下查询DSL:
curl -XPOST 'localhost:9200/employee/_search?pretty' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}'
现在我的问题是,有什么方法可以优化上述查询?就像,如果我必须搜索多个必须和必须的标准,则查询将变得非常大且难以管理。有什么办法可以在一个搜索短语下同时组合必须和必须的_not?
据我所知,您可以使用"应该"将多个匹配项放入" bool"语句中(不确定为什么它完全无法直接与一个" bool"语句一起使用):
edit 实际上要有几次匹配,而没有太复杂的请求,下面的内容应正常工作:
{
"query": {
"bool":{
"must": [
{"match":{"age":"40"}},
{"match":{"name": "John"}}
]
, "must_not": [
{"match":{"age":"40"}},
{"match":{"name": "John"}}
]
}
}
}
不幸的是,must
和must_not
无法组合