ES

Elastic Search

2017-12-18  本文已影响8人  lixwcqs

类比关系型数据库

类比关系型数据库

DSL(Domain Specific Language特定领域语言)语法

查询表达式

查询格式

{
  QUERY_NAME: {
      ARGUMENT: VALUE,
      ARGUMENT: VALUE,...
  }
}
{
  QUERY_NAME: {
    FIELD_NAME: {
      ARGUMENT: VALUE,
      ARGUMENT: VALUE,...
    }
  }
}

1. 叶查询子句(Leaf query clauses)

它们在特定字段中查找特定值

2. 复合查询子句(Compund query clauses)

这些查询是叶查询子句和其他复合查询的组合,用于提取所需的信息。

两种结构化语句

过滤语句

{ "term": { "age": 26 }}
{ "term": { "date": "2014-09-01" }}
{ "term": { "public": true }}
{ "term": { "tag": "full_text" }}
{
  "terms": {
    "tag": [ "search", "full_text", "nosql" ]
  }
}
{
  "range": {
     "age": {
     "gte": 20,
     "lt": 30
    }
  }
}
{
    "exists": {
        "field": "title"
    }
}

这两个过滤只是针对已经查出一批数据来,但是想区分出某个字段是否存在的时候使用

{
    "bool": {
        "must": { "term": { "folder": "inbox" }},
        "must_not": { "term": { "tag": "spam" }},
        "should": [
            { "term": { "starred": true }},
            { "term": { "unread": true }}
        ]
    }
}

查询语句

{
   match_all:{}
}

查询关注的是相关性,而过滤关注为是否符合条件。
一般使用查询语句做全文本搜索或其他需要进行相关性评分的时候,剩下的全部用过滤语句

上一篇下一篇

猜你喜欢

热点阅读