elaticsearch(2)

1.IK分词器

分词:把一段中文或其他文字划分为一个个关键字。将搜索的信息分词,并把数据库或索引库中的数据分词,进行匹配。默认每个中文是一个词(不使用IK分词器时)

IK分词器提供了两个算法:ik_smart和ik_max_word,ik_smart为最少切分,ik_max_word为最细粒度切分。

添加自定义词到字典中

1.elasticsearch目录/plugins/ik/config/IKAnalyzer.cfg.xml

2.打开 IKAnalyzer.cfg.xml 文件,扩展字典,加入my.dic

3.编辑my.dic,写入自定义词组

4.重启ES

2.Restful

一种软件架构风格,用于客户端和软件的交互。

method url地址 描述
PUT(创建,修改) localhost:9200/索引名称/类型名称/文档id 创建文档(指定文档id)
POST(创建) localhost:9200/索引名称/类型名称 创建文档(随机文档id)
POST(修改) localhost:9200/索引名称/类型名称/文档id/_update 修改文档
DELETE(删除) localhost:9200/索引名称/类型名称/文档id 删除文档
GET(查询) localhost:9200/索引名称/类型名称/文档id 查询文档通过文档ID
POST(查询) localhost:9200/索引名称/类型名称/文档id/_search 查询所有数据

创建索引

  1. PUT /test/type/1
  2. {
  3. "name" : "流柚",
  4. "age" : 18
  5. }

3.字段类型

1.字符串类型

        1>text:支持分词,全文检索、支持模糊、精确查询、排序,不支持聚合,且字符串长度无限制,适合大字段存储。

        2>keyword:不支持分词,直接索引,支持模糊、精确查询、排序,支持聚合。

2.数值型:long、Interger、short、byte、double、float、half float、scaled float

3.日期类型:date

4.布尔类型:boolean

5.二进制:binary

修改文档

1.使用put,覆盖掉原来的值。但是漏掉哪个字段没有写,这个字段会消失

2.post的_updata,不会丢失字段

删除索引:DELETE /test

查询索引:GET test

复杂查询:

        1>查询匹配:match:匹配(使用分词器进行解析(先分析文档,再查询))

                                _source:过滤字段、sort:排序、form、size:分页

  // 查询匹配
  GET /blog/user/_search
  {
    "query":{
      "match":{
        "name":"请"
      }
    }
    ,
    "_source": ["name","desc"]
    ,
    "sort": [
      {
        "age": {
          "order": "asc"
        }
      }
    ]
    ,
    "from": 0
    ,
    "size": 1
  }

        2>多条件查询(bool):must相当于and、should相当于or、must_not相当于not、filter过滤

/// bool 多条件查询
must <==> and
should <==> or
must_not <==> not (... and ...)
filter数据过滤
boost
minimum_should_match
GET /blog/user/_search
{
  "query":{
    "bool": {
      "must": [
        {
          "match":{
            "age":3
          }
        },
        {
          "match": {
            "name": "流"
          }
        }
      ],
      "filter": {
        "range": {
          "age": {
            "gte": 1,
            "lte": 3
          }
        }
      }
    }
  }
}

        3>匹配数组:在此数组中的都会通过分词器查询出来

// 匹配数组 貌似不能与其它字段一起使用
// 可以多关键字查(空格隔开)
// match 会使用分词器解析(先分析文档,然后进行查询)
GET /blog/user/_search
{
  "query":{
    "match":{
      "desc":"青蛙 啊 岸上"
    }
  }
}

        4>精确查询:term通过倒排索引,指定词条查询,适合查询number、date、keyword、不适合text。

// 精确查询(必须全部都有,而且不可分,即按一个完整的词查询)
// term 直接通过 倒排索引 指定的词条 进行精确查找的
GET /blog/user/_search
{
  "query":{
    "term":{
      "desc":"年 "
    }
  }
}

你可能感兴趣的:(django,python,后端)