elastic使用

使用python时注意保持一个好习惯:不要使用类似str、type这样的变量名,很容易引发错误:

https://blog.csdn.net/lifelegendc/article/details/55051374

每启动的一个elastic search相当于创建一个节点node(多个节点可以构成一个集群cluster)

每个节点中有若干个索引index(相当于RMDB中的数据库)

创建index的方法

put方法:/index名

查询所有index

get方法:/_cat/indices?v

每个索引中有若干个文档document,相当于一条数据,只不过文档的格式不是固定的,只要符合json格式就好

http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

编写脚本发送get/post/put/delete请求到elasticsearch(也可直接使用chrome的插件Postman

获取index:

Get Host/_cat/indices?v

创建index:

Put host/indexname

成功:{"acknowledged":true,"shards_acknowledged":true} 注意!key是acknowledged,而不是acknowledge,不要漏掉了d!

删除index:

Delete host/indexname

获取mapping:

Get Host/_mapping

Get Host/indexname/_mapping

Get Host/indexname/typename/_mapping

获取document:

Get host/indexname/typename/document_id(单个)

Get host/indexname/typename/_search(所有)

创建/修改document:

Put host/indexname/typename/document_id

json=data

headers=headers

注意:

1、使用python3的requests包的put方法时,如果要put json数据,requests.put中应该把json类型的json数据赋给json参数。

(之前我直接把字符串类型的json数据赋给data参数,英文下是可以put的,但是如果put中文就会出现难以解决的编码错误)

(之前我还直接把json类型的json数据赋给data参数,则elastic search会报只接受二进制流的错误,见下图)

关于requests.post中json参数和data参数的解释详见help(requests.put)

2、必须指定headers中的ContentType字段为application/json

requests.put(url,json=...,headers=...)

3、Put时,仅指定了url,json和headers字段,可以成功put进去,但elastic会报一个error,暂时不影响使用,可无视:

4、如果elasticsearch返回failtoparse错误,一般来说是路径写错了

删除document:

Delete host/indexname/typename/document_id

中文支持:

Elasticsearch中安装插件。

发送请求的脚本中直接发送中文即可,注意从文件中读取中文时,文件要设定编码,然后读取的脚本中要采用对应的编码:

string=""

with open("querystr.txt",encoding='utf-8') as file:

string=file.read()

查询index:

Post host/indexname/typename/_search

json=data

headers=headers

不加headers会报content-type header错误:

将json类型的json数据赋给data参数而不是json参数时,会报parse error错误:

蓝色表示自定义的内容

查询title字段恰好为222的document,多种方式:

法一:

Post Host/indexname/typename/_search?pretty=true

{"query":{"match":{"title":"222"}}}

法二:

Get Host/indexname/typename/_search?pretty=true&q=222

Elastic search默认检索规则:
1、默认只能对document中第一次层的key对应的value进行检索

2、划分规则:对于英文,默认按单词(即按空格)划分,默认无法检索单词的一部分。

3、划分规则:对于中文,默认按字(即每个字都分开)划分,因而可以检索中文词的一部分。

4、匹配规则:

match:英文:有两个完全相同的单词,匹配成功。中文,有两个完全相同的字,匹配成功;但是符号除外,即只有两个完全相同的符号(例如,),匹配失败。因此match可用匹配中文字和英文单词。

match_phrase:英文:有两个完全相同的词组,则匹配成功。中文,有若干个完全相同且顺序相同的字符,即匹配成功。因此match_phrase可用于匹配中文词/词组和英文词组。

elastic search使用的更多相关文章

  1. elastic search查询命令集合

    Technorati 标签: elastic search,query,commands 基本查询:最简单的查询方式 query:{"term":{"title" ...

  2. elastic search 学习笔记

    Elastic search在数据分析的应用中相当于一个数据库的搜索引擎. 跟MySQL类似,它有自己的查询语言,只不过不是关系型数据库,属于NoSQL. 可以根据索引从分布式服务器文件系统中快速存取 ...

  3. elastic search 学习 一

    初步阅读了elastic search 的文档,并使用command实践操作. 大概明白其概念模型.

  4. 分库分表后跨分片查询与Elastic Search

    携程酒店订单Elastic Search实战:http://www.lvesu.com/blog/main/cms-610.html 为什么分库分表后不建议跨分片查询:https://www.jian ...

  5. 自学elastic search

    工作也有一段时间了,虽然来这个公司之后学会了几门不同的语言,但想拨尖还是任重道远. 想往高级程序员甚至是架构师方向发展.他仍然是我的学习对象.我现在做着的,无非是他玩剩下的罢了. luncene之前有 ...

  6. Elastic Search 上市了,市值翻倍,这群人财务自由了!

    国庆长假,大部分人还深浸在风花雪月之中,而就在昨天(美国时间10月5号),我们 Java 程序员所熟知的大名鼎鼎的 Elastic Search 居然在美国纽约证券交易所上市了! 当说到搜索时,大部分 ...

  7. Elastic Search 安装和配置

    目标 部署一个单节点的ElasticSearch集群 依赖 java环境 $java -version java version "1.8.0_161" Java(TM) SE R ...

  8. [elastic search][redis] 初试 ElasticSearch / redis

    现有项目组,工作需要. http://www.cnblogs.com/xing901022/p/4704319.html Elastic Search权威指南(中文版) https://es.xiao ...

  9. elastic search文档详解

    在elastic search中文档(document)类似于关系型数据库里的记录(record),类型(type)类似于表(table),索引(index)类似于库(database). 文档一定有 ...

  10. elastic search 查询

    eelastic search主要有两种查询方式,一种是查询字符串,一种是请求体(json格式)查询. 查询字符串: 查询字符串的功能相对简单,使用容易. 比如GET http://localhost ...

随机推荐

  1. Atitit.index manager api design 索引管理api设计

    Atitit.index manager api design 索引管理api设计 1. kw 1 1.1. 索引类型 unique,normal,fulltxt 1 1.2. 聚集索引(cluste ...

  2. Android Studio编译的时候提示Gradle无法下载的解决方案

    首先,打开android studio项目 找到项目目录gradle\wrapper\gradle-wrapper.properties这个文件.内容如下:#Wed Apr 10 15:27:10 P ...

  3. Android4.4的init进程

    1背景 前些日子需要在科室内做关于Android系统启动流程的培训.为此,我在几年前的技术手记的基础上,重新改了一份培训文档.在重新整理文档期间,我也重读了一下Android 4.4的相关代码,发现还 ...

  4. ubuntu 13.10使用fcitx输入法

    ubuntu 13.10使用fcitx输入法 2013-10-19 20:15:57 标签:fcitx ubuntu 13.10 五笔拼音输入法 原创作品,允许转载,转载时请务必以超链接形式标明文章 ...

  5. node多项目同时运行,nginx端口监听转发

    在服务器端安装pm2 npm install npm2 -g --save 之后再项目目录下运行 pm2 start app.js 在查看进程,是否已经启动 pm2 list 多个项目,我们只要监听端 ...

  6. jquery 操作input radio 单选框

    1.jquery选中单选框 2.jquery 取消单选框 3.判断是否选中 4.设置不可编辑

  7. 浅谈HTTPS协议和SSL、TLS之间的区别与关系

    HTTP可能是我们见到过最多的一个字符串了,应该没有之一,而对于HTTPS到来和趋势,我们又开始看到SSL/TLS,所以对于一般不只做技术的人来说这或许还是一个疑问,那么子凡就趁最近在折腾这方面来给大 ...

  8. 【跟我一步一步学Struts2】——Struts2工作流程

    上一篇博客通过一个简单的小样例对struts2的流程有一个简单的了解,这篇博客继续. 当用户要登陆某一个站点.输入username,password,点击登陆就会触发以下一系列过程 : 1.请求过来之 ...

  9. Windows动态库的使用 part one

    二.动态库程序 这篇写得比较乱,看不懂的可以跳part 2,直接上图片的.   动态库的使用: 4.3.1 隐式链接 动态库的隐式连接,需要动态库的 动态库文件".dll" , 动 ...

  10. 【转】MOCK测试

    mock测试:就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象[mock对象]来创建以便测试的测试方法. mock对象:这个虚拟的对象就是mock对象. mock对象就是真 ...