我刚接触过elatic搜索,不幸的是,elasticearch.com的文档还不够好。我知道如何使用术语:
{
"term" : { "user" : "kimchy" }
}
请您帮忙用这些标准构建我的查询? (user =" ehsan"或user =" afsaneh")和((年龄在10到20岁之间)或(年龄在40到50岁之间))
答案 0 :(得分:1)
你应该看看:
bool
查询(documentation):它将帮助您使用条款must
/ should
/ {{1}将不同的标准与AND / OR / NO结合起来} must_not
过滤器(documentation):其目标是排除与您设置的值间隔不匹配的文档。以下查询应该可以解决问题:
range
然而,imho,Elasticsearch文档非常好。 您应该花时间阅读更多内容以了解如何构建其他查询:像这样(特别是关于difference between query and filters)。
修改:两个{
"query": {
"filtered": {
"query": {
"bool": {
"should": [
{
"term": {
"user": "ehsan"
}
},
{
"term": {
"user": "afsaneh"
}
}
]
}
},
"filter": {
"or": {
"filters": [
{
"range": {
"age": {
"from": 10,
"to": 20
}
}
},
{
"range": {
"age": {
"from": 40,
"to": 50
}
}
}
]
}
}
}
}
}
查询可以替换为单个term
,如下所示:
terms