1、创建测试索引

PUT /test_index
{
"mappings": {
"test_type":{
"properties": {
"code":{
"type": "keyword"
},
"name":{
"type": "text",
"analyzer": "ik"
},
"count":{
"type": "integer"
}
}
}
},
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1,
"max_result_window":10000,
"analysis": {
"analyzer": {
"ik":{
"tokenizer":"ik_max_word",
"stopwords":["的","是"]
}
}
}
}
}

2、插入数据

PUT test_index/test_type/1  #4代表索引记录的唯一标识,类似数据库表中主键
{
"code":"001",
"name":"万科企业股份有限公司"
}

PUT test_index/test_type/2
{
"code":"002",
"name":"万达集团股份有限公司"
}

PUT test_index/test_type/3
{
"code":"003",
"name":"阿里巴巴(中国)有限公司"
}

PUT test_index/test_type/4
{
"code":"004",
"name":"中国平安"
}

3、删除数据

DELETE test_index/test_type/4  #4代表索引记录的唯一标识,类似数据库表中主键

4、更新数据

回复删除的4数据

PUT test_index/test_type/4
{
"code":"004",
"name":"中国平安"
}

①覆盖更新

PUT test_index/test_type/4
{
"name":"中国平安"
}

②更新字段值

POST test_index/test_type/4/_update
{
"doc": {
"name":"中国平安保险(集团)股份有限公司"
}
}

5、查询数据

在kibana中默认只显示10条记录

①查询所有

方式1:

GET test_index/test_type/_search

方式2:

GET test_index/test_type/_search
{
"query":{
"match_all": {}
}
}

②根据指定分词字段查询

name:为索引中的中文分词字段

GET test_index/test_type/_search
{
"query":{
"match": {
"name": "中国"
}
}
}

③、根据指定不分词字段查询

GET test_index/test_type/_search
{
"query":{
"term": {
"code": "004"
}
}
}

④、根据文档id查询

查询描述:pXrY0GsBN9ZpEwHZ14it:文档id

方式1:GET 索引/类型/文档id

GET test_index/test_type/

方式2:_id文档唯一的id

GET test_index/test_type/_search
{
"query":{
"match": {
"_id": ""
}
}
}

⑤多条件查询

多条件and关系:

#逻辑:and关系
GET test_index/test_type/_search
{
"query": {
"bool": {
"must": [
{"match": { "question": "淘宝"}},
{"match": { "question": "软件"}}
]
}
}
}

GET test_index/test_type/_search
{
"query":{
"bool": {
"must": [
{
"match": {
"name":"中国平安保险(集团)股份有限公司"
}
},
{
"term": {
"code": "004"
}
}
]
}
}
}

多条件or关系:

GET test_index/test_type/_search
{
"query":{
"bool": {
"should": [
{
"match": {
"name":"中国平安保险(集团)股份有限公司"
}
},
{
"term": {
"code": "004"
}
}
]
}
}
}

多条件and和or关系混合使用:

GET test_index/test_type/_search
{
  "query":{
    "bool": {
      "should": [
        {
          "match": {
            "name":"中国平安保险(集团)股份有限公司"
          }
        },
        {
          "term": {
            "code": "004"
          }
        }
      ],
      "must": [
        {
          "match": {
            "count": 2
          }
        }
      ]
    }
  }
}

自定义排序:

GET test_index/test_type/_search
{
  "query": {
    "bool": {
      "must" : [
        {
          "match" : {
            "name" : {
              "query" : "中国平安"
            }
          }
        }
      ],
    "adjust_pure_negative": true,
    "boost": 1.0
    }
  },
  "_source": {
    "includes": ["code", "name"],
    "excludes": []
  },
  "sort": [{
    "count": {
      "order": "desc"
    }
  }]
}

⑥指定查询条数

GET test_index/test_type/_search
{
"query": {
"match": {
"question": "淘宝"
}
},
"from": 1, #指定位移
"size": 5 #指定查询条数
}

⑦指定查询返回的字段

GET test_index/test_type/_search
{
"_source": ["question","nlp"], #返回字段数组
"query": {
"match": {
"question": "淘宝"
}
}
}

⑧控制加载的字段

GET test_index/test_type/_search
{
"_source": {"includes": ["question","nlp"],"excludes": ["isSatisfied"]},
"query": {
"match": {
"question": "淘宝"
}
}
}

⑨通配符

GET test_index/test_type/_search
{
"_source": {"includes": ["quest*"],"excludes": ["*Date"]},
"query": {
"match": {
"question": "淘宝"
}
}
}

排序

GET test_index/test_type/_search
{
"sort": [
{
"askTimes": {
"order": "desc"
}
}
],
"query": {
"match_all": {}
}
}

前缀匹配

GET test_index/test_type/_search
{
"query": {
"match_phrase_prefix": {
"question": "万科"
}
}
}

返回查询

GET test_index/test_type/_search
{
"query": {
"range": {
"askTimes": {
"gte": 10, #
"lte": 20
}
}
}
}

wildcard查询
*代表0个或多个字符
?代表任意一个字符

GET test_index/test_type/_search
{
"query": {
"wildcard": {
"question": "万科*"
}
}
}

模糊查询

GET test_index/test_type/_search
{
"query": {
"fuzzy": {"question": "万科"}
}
}

高亮搜索结果

注:在Kibana中没有看到效果

GET test_index/test_type/_search
{
"query": {
"match": {
"question": "淘宝"
}
},
"highlight": {
"fields": {"question"
:{}}
}

}

过滤查询

GET test_index/test_type/_search
{
"post_filter": {
"term": {
"askTimes": 10
}
}
}

过滤非空

GET test_index/test_type/_search
{
"query": {
"bool": {
"filter": {
"exists": {
"field": "nlp"

}
}
}

}
}

聚合查询

sum,min,max,avg,cardinality:求基数,terms:分组

GET /test_index/test_type/_search
{
"size": 0,
"aggs": {
"askTimes_of_max": { #自定义名称
"max": { #最大值
"field": "askTimes"
}
}
}
}

符合查询:待整理

7、检查noop更新

默认情况下,不更改任何内容的更新会返回“result”:“noop”;

可以通过设置“detect_noop”来禁用此行为:false

PUT test_index/test_type/4
{
  "code":"004",
  "name":"中国平安保险(集团)股份有限公司",
  "count":2,
  "tags":["aa","bb"]
}

POST test_index/test_type/4/_update
{
  "doc": {
    "name":"中国平安保险(集团)股份有限公司"
  },
  "detect_noop":false
}

区别:
 
禁用此行为后,不更改任何内容的更新也会返回updated并且文档版本号加1;
 
不禁用此行为,不更改任何内容的更新会返回noop并且文档版本号不变。
 
8、Upserts更新
如果文档不存在,则upsert元素的内容将作为新文档插入。如果文档存在,那么script将执行:

POST test_index/test_type/5
{
  "script" : {
    "source": "ctx._source.count += params.count",
    "lang": "painless",
    "params" : {
      "count" : 4
    }
  },
  "upsert" : {
    "count" : 1
  }
}

如果无论文档是否存在您都希望脚本运行,即脚本处理初始化文档而不是upsert元素,设置scripted_upsert为true:

POST test_index/test_type/5
{
  "scripted_upsert":true,
  "script" : {
    "source": "ctx._source.count += params.count",
    "lang": "painless",
    "params" : {
      "count" : 4
    }
  },
  "upsert" : {
    "count" : 1
  }
}

同scripted_upsert,如果无论文档是否存在都希望脚本运行,即脚本处理初始化文档而不是upsert元素,设置doc_as_upsert为true(文档5不存在):

POST test_index/test_type/5/_update
{
  "doc":{
    "count":12
  },
  "doc_as_upsert":true,
  "upsert":{
    "count":16
  }
}

查询结果:GET test_index/test_type/5

{
  "_index": "test_index",
  "_type": "test_type",
  "_id": "5",
  "_version": 11,
  "found": true,
  "_source": {
    "count": 12
  }
}

9、其他

①、统计索引文档数量

描述:GET 索引/类型/_count

GET test_index/test_type/_count

②检测分词效果

POST test_index/_analyze
{
"analyzer": "ik_max_word",
"text": "我是中国人"
}

ES索引操作的更多相关文章

  1. Elasticsearch必知必会的干货知识二:ES索引操作技巧

    该系列上一篇文章<Elasticsearch必知必会的干货知识一:ES索引文档的CRUD> 讲了如何进行index的增删改查,本篇则侧重讲解说明如何对index进行创建.更改.迁移.查询配 ...

  2. 008-elasticsearch5.4.3【二】ES使用、ES客户端、索引操作【增加、删除】、文档操作【crud】

    一.ES使用,以及客户端 1.pom引用 <dependency> <groupId>org.elasticsearch.client</groupId> < ...

  3. ES入门三部曲:索引操作,映射操作,文档操作

    ES入门三部曲:索引操作,映射操作,文档操作 一.索引操作 1.创建索引库 #语法 PUT /索引名称 { "settings": { "属性名": " ...

  4. ElasticSearch+Kibana 索引操作

    ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...

  5. 数据源、数据集、同步任务、数据仓库、元数据、数据目录、主题、来源系统、标签、增量识别字段、修改同步、ES索引、HBase列族、元数据同步、

    数据源.数据集.同步任务.数据仓库.元数据.数据目录.主题.来源系统.标签. 增量识别字段.修改同步.ES索引.HBase列族.元数据同步.DS.ODS.DW.DM.zk集群地址 == 数据源 数据源 ...

  6. elasticsearch的索引操作和文档操作总结

    参考文档:https://es.xiaoleilu.com/010_Intro/00_README.html 一.索引操作 1.查看当前节点的所有的index 查看当前节点的所有的index [roo ...

  7. Kibana自动关联ES索引

    原因: Kibana中关联ES索引需要手动操作,如果ES中索引较多(如每天生成),则工作量会比较大. 方法: 考虑使用Linux的cron定时器自动关联ES索引,原理是调用Kibana API接口自动 ...

  8. es常用操作

    1.查看所有索引 _cat/indices?v 2.删除索引 DELETE my_index 3.查询缓存 curl /my_index/_search?request_cache=true' -d' ...

  9. Elasticsearch ES索引

    ES是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎. 同时ES还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,能够横向 ...

随机推荐

  1. Node教程——API接口开发(Node版的CRUD通用接口的搭建)(MangoDB+Express_Version2)

    1. 概述 时间跨度有点大,之前就跟大家唠嗑过一些知识点,也开启了一个Node书写一个后台api项目的开始,出于各种原因,迟迟没有更新博文.现在我把这个坑填上,如果你还有阅读过我之前的文章,我建议你先 ...

  2. RabbitMQ应用示例

    更多详情参考官方文档:https://www.rabbitmq.com/tutorials/tutorial-six-python.html 参考博客:https://blog.csdn.net/we ...

  3. js 获取table tr td内的select 和input text

    $("#TableList tr").each(function () {                //for (var i = 1; i <= AM_index; i ...

  4. SQL——SQL约束

    SQL约束 - 用于限制加入表的数据的类型    可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句).    NOT NULL ...

  5. java——assert(断言)方法

    包:org.junit.Assert; assertEqual(a,b,[msg='测试失败时打印的信息']): 断言a和b是否相等,相等则测试用例通过. assertNotEqual(a,b,[ms ...

  6. 把数据写入txt中 open函数中 a与w的区别

    a: 打开一个文件用于追加.如果该文件已存在,文件指针将会放在文件的结尾. 也就是说,新的内容将会被写入到已有内容之后.如果该文件不存在,创建新文件进行写入. w:  打开一个文件只用于写入.如果该文 ...

  7. C#正则表达式基础

    namespace ---> System.Text.RegularExpressions. static void Main(string[] args) { // if (IsInputMa ...

  8. mysql Invalid use of group function的解决办法

    错误语句:SELECT s.SID, s.Sname, AVG(a.score)FROM student sLEFT JOIN sc a ON s.SID = a.SID WHERE AVG(a.sc ...

  9. ubuntu18.04.4安装k8s

    k8s部署 1.集群所有主机关闭swap sudo swapoff -a sudo sed -i 's/.*swap.*/#&/' /etc/fstab 如果重启后swap还是自动挂载执行sy ...

  10. unicode 的中文字符串,调用 isalnum()返回的是 True ?

    描述 Python isalnum() 方法检测字符串是否由字母和数字组成. 语法 isalnum()方法语法: str.isalnum() 返回值 如果 string 至少有一个字符并且所有字符都是 ...