DSL 這個功能怎麼寫?謝謝老師

来源:5-13 -count-and-source-filtering

苦瓜苦也

2019-09-03

GET test_index010/_search?q=username:alfred age:>20
這個語句用DSL 怎麼寫?試了很多種寫法都不對,請教老師了。
GET test_index010/_search
{
“query”:{
“query_string”:{
“fields”:[“username”],
“query”:“alfred”
},
“range”:{
“age”:{
“gte”:“20”
}
}
}
}
上面這樣寫 報錯。
GET test_index010/_search
{
“query”:{
“bool”:{
“filter”:[
{
“term”:{
“username”:“alfred”
}
},
{
“query_string”:{
“fields”:[“age”],
“query”:“age:>20”
}
}
]
}
}
}
上面這樣寫 又是先匹配的username:“alfred” 再進行 age:>20的過濾,跟原先的GET test_index010/_search?q=username:alfred age:>20 需求不一樣。
請老師幫忙看看了,想了很久,想不出怎麼寫了。

写回答

1回答

rockybean

2019-09-16

这里要用 bool must 来实现,参见这里

https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-bool-query.html

must 下面可以是一个数组,比如你这个可以写成

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "username": "alfred"
          }
        },
        {
          "range": {
            "age": {
              "gte": 10
            }
          }
        }
      ]
    }
  }
}


0
0

Elastic Stack从入门到实践,动手搭建数据分析系统

有了Elastic Stack,不用写一行代码,你也可以玩转大数据分析!

1328 学习 · 393 问题

查看课程