DSL语句

作者: 愤愤的有痣青年 | 来源:发表于2020-06-21 12:33 被阅读0次

match_all

  • match_all 查询简单的匹配所有文档。在没有指定查询方式时,它是默认的查询:
{ "match_all": {}}

match 查询

  • 此查询方式可以用于全文查询和精确查询,如果是全文查询,执行查询前,其将使用分析器去分析查询字符串:
{ "match": { "tweet": "About Search" }}
  • 此关键字也可以用于精确查询
{ "match": { "age":    26           }}
{ "match": { "date":   "2014-09-01" }}
{ "match": { "public": true         }}
{ "match": { "tag":    "full_text"  }}

对于精确查询,使用filter相对于query,前者可以将查询结果进行缓存

multi_match 多字段查询

  • multi_match 查询可以在多个字段上执行相同的 match 查询:
{
    "multi_match": {
        "query":    "full text search",
        "fields":   [ "title", "body" ]
    }
}

range查询

  • range可以查询找出那些落在指定区间内的数字或者时间
{
    "range": {
        "age": {
            "gte":  20,
            "lt":   30
        }
    }
}
  • 被允许的操作符如下:
    gt 大于
    gte大于等于
    lt小于
    lte小于等于

term查询

  • term查询被用于精确值匹配,这些精确值可能是数字、时间、布尔或者那些不需要分析的字符串,与match相比,此查询适合不需要评分的操作.
{ "term": { "age":    26           }}
{ "term": { "date":   "2014-09-01" }}
{ "term": { "public": true         }}
{ "term": { "tag":    "full_text"  }}
  • term 查询对于输入的文本不 分析 ,所以它将给定的值进行精确查询。

terms查询

  • terms查询和 term 查询一样,但它允许你指定多值进行匹配。如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件:
{ "terms": { "tag": [ "search", "full_text", "nosql" ] }}

exists 查询和 missing 查询

  • exists 查询和 missing 查询被用于查找那些指定字段中有值 (exists) 或无值 (missing) 的文档。这与SQL中的 IS_NULL (missing) 和 NOT IS_NULL (exists) 在本质上具有共性:
{
    "exists":   {
        "field":    "title"
    }
}
  • 这些查询经常用于某个字段有值的情况和某个字段缺值的情况。

相关文章

网友评论

      本文标题:DSL语句

      本文链接:https://www.haomeiwen.com/subject/xlnoxktx.html