ES(elasticsearch) query DSL 查询语法


全文检索,入参分词后检索整个文档

"query_string": {
    "default_field": "name",
    "query": "被检索的字符串"
}

前缀检索,入参分词 "prefix":{
   "name": "被检索的前缀"
}

按属性精确查找,入参不会被分词 "term": {
    "name": "被检索的字符串"
}

按属性多值精确查找,入参不会被分词 "terms": {
    "name": [
        "被检索的字符串1",
        "被检索的字符串2"
    ]
}

多属性分词查找,入参被分词 "multi_match": {
    "query": "被检索的字符串",
    "fields": [
        "name",
        "city"
    ]
}

按属性分词查找,入参被分词 "match": {
    "name": "name 是字段名,这段话是要检索的文本"
}

短语查找,入参分词,但是词序不变 "match_phrase": {
    "name": "完整匹配"
}

范围查找 

"range": { "age": { "gte": 10, "lte": 20 } } bool 值查找很特殊,它是上面查找的组合,可以把他们理解为 逻辑连接,上面的查询都是对文档的过滤。 filter 关键字也是
过滤作用的,但是它不能单独使用,必须跟 bool 联合使用
"bool": { "must_not": [ { "term": { "name": { "value": "被检索的字符串" } } } ], "filter": { "exists": { "field": "被检查的字段名" } } }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM