深入理解elasticsearch-读书笔记

es基本查询

添加索引

put /new_test
{
  "mappings": {
    "properties": {
      "author": {
        "type": "text"
      },
      "characters": {
        "type": "text"
      },
      "copies": {
        "type": "long"
      },
      "otitle": {
        "type": "text"
      },
      "tags": {
        "type": "keyword"
      },
      "title": {
        "type": "text"
      },
      "year": {
        "type": "long"
      },
      "available": {
        "type": "boolean"
      },
      "review": {
        "type": "nested",
        "properties": {
          "nickname": {
            "type": "text"
          },
          "text": {
            "type": "text"
          },
          "stars": {
            "type": "integer"
          }
        }
      }
    }
  }
}

批量插入数据

post /new_test/_bulk
{ "index" : {  "_id" : "1" } }
{"title":"All Quiet on the Western Front","otitle":"Im Westen nichts Neues","author":"Erich Maria Remarque","year":1929,"characters":["Paul Bäumer","Albert Kropp","Haie Westhus","Fredrich Müller","Stanislaus Katczinsky","Tjaden"],"tags":["novel"],"copies":1,"available":true,"section":3}
{"index":{"_id":"2"}}
{"title":"Catch-22","author":"Joseph Heller","year":1961,"characters":["John Yossarian","Captain Aardvark","Chaplain Tappman","Colonel Cathcart","Doctor Daneeka"],"tags":["novel"],"copies":6,"available":false,"section":1}
{"index":{"_id":"3"}}
{"title":"The Complete Sherlock Holmes","author":"Arthur Conan Doyle","year":1936,"characters":["Sherlock Holmes","Dr. Watson","G. Lestrade"],"tags":[],"copies": 0, "available":false, "section":12}

查询[1,3]区间的数据

get /new_test/_search
{
  "query":{
    "range":{
      "copies":{
        "gte":1,
        "lte":3
      }
    }
  }
}

找出所有至少有一本的书籍,并对1950年后出版的书籍进行加权

get /new_test/_search
{
  "query":{
    "bool":{
      "must":[{"range":{"copies":{"gte":1}}}],
      "should":[{"range":{"year":{"gt":1950}}}]
        
    }
  }
}

查找出所有tags字段包含novel值的书籍

get /new_test/_search
{
  "query":{
     "term":{
       "tags":"novel"
     }
  }
}

前缀查询

get /new_test/_search
{
  "query":{
     "prefix":{
       "title":"qu"
     }
  }
}

匹配短语

get /new_test/_search
{
  "query":{
    "match_phrase":{
      "otitle":"nichts"
    }
  }
}

最佳字段匹配

GET /library/_search?pretty
{
 "query" : {
  "multi_match" : {
   "query" : "Holmes",
   "fields" : [ "title", "author", "characters" ],
   "type" : "best_fields",
   "tie_breaker" : 0.8
  }
 }
}

短语匹配

GET /library/_search?pretty
{

 "query" : {
  "multi_match" : {
   "query" : "sherlock holmes",
   "fields" : [ "title", "author" ],
   "type" : "phrase"
  }
 }
}

带前缀短语匹配

GET /library/_search?pretty
{

 "query" : {
  "multi_match" : {
   "query" : "Cat",
   "fields" : [ "title", "author" ],
   "type" : "phrase_prefix"
  }
 }
}
 

改正用户拼写错误

get /bank/_search
{
  "suggest":{
    "first_suggestion":{
      "text":"chorme",
      "term":{
        "field":"title"
      }
    }
  }
}

会得到不同的用户建议和分数

text:Elasticsearch给出的建议词。
score:建议词的得分,得分越高的建议词,其质量越高。
freq:建议词在文档中出现的频率

原文地址:https://www.cnblogs.com/Baronboy/p/15343528.html