ElasticSearch(五):简单的ElasticSearch搜索功能

这里主要是一些简单的ElasticSearch的搜索功能,复杂的搜索,比如过滤,聚合等以后单独在写

1. 搜索全部

GET book/_search

直接搜索全部,下面是对搜索结果的详细介绍:默认情况下,是查询出来10条数据,并且按照score的由高到低顺序排列的(因为搜索全部,这里没有score,当条件搜索的时候,会出现。)

2. 单条件搜索

条件查询分为两类:

  • match:match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,将查询语句分词之后去匹配含有分词之后词语的。
  • term:不进行分词,直接完全匹配查询。
  • 需要注意的是:如果你搜索的字段是keyword类型,那么无论match和term都是一样的,都不进行分词。
//match进行查询
GET book/novel/_search
{
  "query": {
    "match": {
      "author": "美十与"
    }
  }
}
//term进行查询
GET book/novel/_search
{
  "query": {
    "term": {
      "author": {
        "value": "己平"
      }
    }
  }
}

解释:查询,需要符合条件:author = “美十与”的结果。这里还有:match_all等其余的方法。

  其中 :match_all的是一个空查询,就是查询索引类型下的所有文档。可以查询出所有文档之后在进行过滤等。

3. 多条件查询

GET book/novel/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "wordCount": "8343705",
       "author": "123"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "author": "天回"
          }
        }
      ]
    }
  }
}

其中:bool可以用来实现多条件查询,bool包含的属性如下:

  must:表示必须匹配的属性,匹配这些条件才能被包含进来

  must_not:表示不能匹配这些条件才能被包含进来。

  should :如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。

  filter :必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。

需要特别注意的是: match不支持多条件查询,会提示 [match] query doesn't support multiple fields, found [author] and [wordCount]"。

一个复杂查询的例子(未经验证)

{
    "bool": {
        "must": { "match":   { "email": "business opportunity" }},
        "should": [
            { "match":       { "starred": true }},
            { "bool": {
                "must":      { "match": { "folder": "inbox" }},
                "must_not":  { "match": { "spam": true }}
            }}
        ],
        "minimum_should_match": 1
    }
}

4. 排序,分页

GET book/novel/_search
{
  "query": {
    "match": {
      "author": "天为回"
    }
  },
  "from": 0, 
  "size":10,
  "sort": [
    {
      "wordCount": {
        "order": "desc"
      }
    }
  ]
}

其中:from:表示分页开始的条数(也是从0开始),size表示你要查询的数量。

  sort:排序的字段,根据哪个字段进行如何排序,上面例子:根据wordCount字段倒序排列。

原文地址:https://www.cnblogs.com/chenmc/p/9523386.html