内容简介:对于query string只要掌握q=field:search content的语法,以及+和-的含义+:代表包含这个筛选条件结果-:代表不包含这个筛选条件的结果
1、query string 语法
GET /test_index/_search?q=test_field1:update
GET /test_index/_search?q=+test_field1:update
{
"took" : 7,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "3",
"_score" : 0.2876821,
"_source" : {
"test_field1" : "update test1",
"test_field2" : "update test2"
}
}
]
}
}
GET /test_index/_search?q=-test_field1:update
{
"took" : 12,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 7,
"relation" : "eq"
},
"max_score" : 0.0,
"hits" : [
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "10",
"_score" : 0.0,
"_source" : {
"test_field" : "test10 routing _id"
}
},
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "7",
"_score" : 0.0,
"_routing" : "2",
"_source" : {
"test_field1" : "test1"
}
},
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "2",
"_score" : 0.0,
"_source" : {
"test_field" : "test client 1",
"name" : "test1"
}
},
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.0,
"_source" : {
"test_field" : "test test",
"name" : "test1"
}
},
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "7",
"_score" : 0.0,
"_routing" : "1",
"_source" : {
"test_field1" : "test1"
}
},
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "11",
"_score" : 0.0,
"_routing" : "12",
"_source" : {
"test_field" : "test routing not _id"
}——
},
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "20",
"_score" : 0.0,
"_source" : {
"test_field" : "test consistency"
}
}
]
}
}
对于query string只要掌握q=field:search content的语法,以及+和-的含义
+:代表包含这个筛选条件结果
-:代表不包含这个筛选条件的结果
2、_all metadata
也就是在使用query string的时候,如果不指定field,那么默认就是_all。_all元数据是在建立索引的时候产生的,我们插入一条document,它里面包含了多个field,此时ES会自动将多个field的值全部用字符串的方式串联起来,变成一个长的字符串。这个长的字符串就是_all field的值。同时建立索引。
举个例子:
对于一个document:
{
"name": "jack",
"age": 26,
"email": "jack@sina.com",
"address": "guamazhou"
}
那么"jack 26 jack@sina.com guamazhou",就会作为这个document的_all fieldd的值,同时进行分词后建立对应的倒排索引。
注意在生产环境中一般不会使用query string这种查询方式。
以上所述就是小编给大家介绍的《elasticsearch学习笔记(二十四)——Elasticsearch query string语法以及_all元数据原理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 编译原理入门课:(一)用最简单的语法分析器解析加减法
- 编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(二)语法分析
- Swift语法快速入门(一)之 Swift基础语法
- 在ES6中使用扩展语法有什么好处?它与rest语法有什么不同?
- Python 基础语法
- go语法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web全栈工程师的自我修养
余果 / 人民邮电出版社 / 2015-9-1 / 49.00
全栈工程师正成为 IT 行业的新秀,论是上市互联网公司还是创业公司,都对全栈工程师青睐有加。本书作者是腾讯公司高级工程师,在前端、后端和APP开发方面都有丰富的经验,在本书中分享了全栈工程师的技能要求、核心竞争力、未来发展方向、对移动端的思考。除此之外,本书还详细记录了作者从零开始、学习成长的心路历程。 本书内容全面,客观务实,适合互联网行业新人、程序员,以及期待技术转型的从业者阅读参考。一起来看看 《Web全栈工程师的自我修养》 这本书的介绍吧!