内容简介:查询集群的名字查询集群的健康状况获取集群的所有索引
查询集群的名字
⇒ curl -XGET 'http://localhost:9200' 复制代码
查询集群的健康状况
⇒ curl -XGET 'http://localhost:9200/_cluster/health?format=yaml' 复制代码
status字段说明:
- green 一切正常
- yellow replicas没有分配[可能是只有单个节点],集群正常
- red 某些数据取不到 format=yaml指定使用yaml格式输出,方便查看
索引操作
获取集群的所有索引
⇒ curl -XGET 'http://localhost:9200/_cat/indices' 复制代码
索引的字段
⇒ curl -XGET 'http://localhost:9200/mytest/_mapping?format=yaml' 复制代码
结果
mytest: mappings: external: properties: addre: type: "string" name: type: "string" 复制代码
它类似于数据库的schema,描述文档可能具有的字段或属性、每个字段的数据类型。
字段对于非string类型,一般只需要设置type。string域两重要属性 index analyzer
index
1. analyzed 全文索引这个域。首先分析字符串,然后索引 2. not_analyzed 精确索引 ,不分析 3. no 此域不会被搜索 复制代码
analyzer
将文本分成四核倒排索引的独立词条,后将词条统一化提高可搜索性 复制代码
动态映射: 文档中出现之前从未遇到过的字段,动态确定数据类型,并自动把新的字段添加到类型映射
新建索引
⇒ curl -XPUT 'localhost:9200/mytest' 复制代码
删除索引
⇒ curl -XDELETE 'localhost:9200/mytest?format=yaml' 复制代码
数据查询
插入单条数据
⇒ curl -XPUT 'localhost:9200/mytest/external/1?format=yaml' -d ' quote> { "name":"paxi"}' 复制代码
查询单条数据
⇒ curl -XGET 'localhost:9200/mytest/external/1?format=yaml' 复制代码
删除单条数据
curl -XDELETE 'localhost:9200/mytest/external/3?format=yaml' 复制代码
存储的文本分析
curl -XGET 'localhost:9200/_analyze?format=yaml' -d ' {"papa xixi write"}' 复制代码
结果为
tokens: - token: "papa" start_offset: 3 end_offset: 7 type: "<ALPHANUM>" position: 1 - token: "xixi" start_offset: 8 end_offset: 12 type: "<ALPHANUM>" position: 2 - token: "write" start_offset: 13 end_offset: 18 type: "<ALPHANUM>" position: 3 复制代码
token 表示实际存储的词条,position表示词条在原始文本中的位置。
可以看出完整的文本会被切割存储成不同的词条
不返回元数据
curl -XGET 'localhost:9200/mytest/_search?filter_path=hits.hits._source&format=yaml' -d ' { "query":{"match":{"name":"papa xixi write"}}}' 复制代码
低版本无法生效
只返回部分字段
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"match":{"name":"papa xixi write"}},"_source":["name"]}' 复制代码
低版本无效,可以用通配符
match查询
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"match":{"name":"papa xixi write"}}}' 复制代码
查询匹配的结果如下
hits: - _index: "mytest" _type: "external" _id: "11" _score: 0.6532502 _source: name: "papa xixi write" - _index: "mytest" _type: "external" _id: "4" _score: 0.22545706 _source: name: "papa xixi" - _index: "mytest" _type: "external" _id: "2" _score: 0.12845722 _source: name: "papa" - _index: "mytest" _type: "external" _id: "10" _score: 0.021688733 _source: name: "xixi" 复制代码
从查询结果,它获取到了所有包含 papa 、 xixi和write 的词,相当于将原来的词拆开,然后两个单词做了 OR 操作,如果要全部匹配,可以使用AND操作
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"match":{"name":{"query":"papa xixi write","operator":"and"}}}}' --- hits: total: 1 max_score: 0.6532502 hits: - _index: "mytest" _type: "external" _id: "11" _score: 0.6532502 _source: name: "papa xixi write" 复制代码
如果只是想提高精度
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"match":{"name":{"query":"papa xixi write","minimum_should_match":"75%"}}}}' --- hits: total: 2 max_score: 0.6532502 hits: - _index: "mytest" _type: "external" _id: "11" _score: 0.6532502 _source: name: "papa xixi write" - _index: "mytest" _type: "external" _id: "4" _score: 0.22545706 _source: name: "papa xixi" 复制代码
term查询
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"term":{"name":"papa xixi write"}}}' 复制代码
它的结果是什么也没有查到
total: 0 max_score: null hits: [] 复制代码
换用查询语句
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"term":{"name":"papa"}}}' 复制代码
结果为
hits: - _index: "mytest" _type: "external" _id: "2" _score: 1.0 _source: name: "papa" - _index: "mytest" _type: "external" _id: "4" _score: 0.37158427 _source: name: "papa xixi" - _index: "mytest" _type: "external" _id: "11" _score: 0.2972674 _source: name: "papa xixi write" 复制代码
match 和 term的区别
match 如果在全文字段上查询,会使用正确的分析器分析查询字符串;如果精确值字段使用,会精确匹配。 term精确匹配,只要包含了对应的文本就可以,不对文本分析(not_analyzed文本会精确匹配,terms 多个值只要有一个匹配就匹配);
从"papa xixi write"的存储文本分析来看,它本身会被切割成不同的词条,所以用 term查询"papa xixi write",无法获取到结果,但是match确能够匹配
filter使用
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"filtered":{"filter":{"range":{"name":{"gt":"w"}}}}}}' 复制代码
或者
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"constant_score":{"filter":{"range":{"name":{"gt":"w"}}}}}}' 复制代码
验证语法是否正确
⇒ curl -XGET 'localhost:9200/_validate/query?explain&format=yaml' -d '{ "query":{{"filter":{"range":{"name":{"gt":"w"}}}}}' --- valid: false //原因省略 复制代码
bool使用
使用term查询
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { "query":{"term":{"addre":"beijing"}}}' 复制代码
结果为
hits: - _index: "mytest" _type: "external" _id: "5" _score: 0.30685282 _source: addre: "beijing" - _index: "mytest" _type: "external" _id: "6" _score: 0.30685282 _source: addre: "beijing" name: "px" 复制代码
转换为bool查询,结果一样
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { query:{bool:{must:{match:{addre:"beijing"}}}}}' 复制代码
如果只想要最后一条
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { query:{bool:{must:{match:{addre:"beijing"}},must:{match:{name:"px"}}}}}' 复制代码
想要第一条
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { query:{bool:{must:{match:{addre:"beijing"}},must_not:{match:{name:"px"}}}}}' 复制代码
都想要
curl -XGET 'localhost:9200/mytest/_search?format=yaml' -d ' { query:{bool:{must:{match:{addre:"beijing"}},should:{match:{name:"px"}}}}}' 复制代码
must的意思是当前值必须是有的,must_not必须没有,should表示数据可以有也可以没有
以上所述就是小编给大家介绍的《通过命令curl 操作ElasticSearch指南》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 通过实例学习 tcpdump 命令
- 通过 laravel 命令构建项目报错
- 如何通过命令行 msbuild 编译项目
- 通过 mysqlbinlog 和 grep 命令定位binlog文件中指定操作
- 再看Zebrocy:APT28通过Delphi后门执行了哪些命令?
- 通过命令行在Python中测试以太坊RPC客户端
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Remote
Jason Fried、David Heinemeier Hansson / Crown Business / 2013-10-29 / CAD 26.95
The “work from home” phenomenon is thoroughly explored in this illuminating new book from bestselling 37signals founders Fried and Hansson, who point to the surging trend of employees working from hom......一起来看看 《Remote》 这本书的介绍吧!