ElasticSearch高级查询

ElasticSearch高级查询

  • 一、ES高级查询
    • 1.1、数据准备
    • 1.2、查询所有文档
    • 1.3、匹配查询

一、ES高级查询

1.1、数据准备

#PUT请求
http://127.0.0.1:9200/student
#插入文档, POST请求
http://127.0.0.1:9200/student/_doc/1001
{
 "age":19,
 "nickname":"zhanggang",
 "name":"张刚",
 "sex":"男"
}
http://127.0.0.1:9200/student/_doc/1002
{
 "age":19,
 "nickname":"zhangkun",
 "name":"张坤",
 "sex":"男"
}
http://127.0.0.1:9200/student/_doc/1003
{
 "age":18,
 "nickname":"xiaohong",
 "name":"小红",
 "sex":"女"
}
http://127.0.0.1:9200/student/_doc/1004
{
 "age":17,
 "nickname":"xiaolan",
 "name":"小蓝",
 "sex":"女"
}

1.2、查询所有文档

下面这种写法,有没有body体,都可以查询所有文档,建议写上body体。
body体中的"query" 代表的是一个查询对象,里面可以有不同的查询属性。 "match_all"表示查询类型,match_all代表查询所有。还有 match,term , range 等查询类型,可以参考下面写法。
#1、GET请求
http://127.0.0.1:9200/student/_search
#请求body
{
  "query": {
	 "match_all": {}
	 } 
 }

1.3、匹配查询

match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系。
可以发现,下面查询会把name为张刚和张坤的两条数据查出来。如果请求body中的name改为"张刚刚",同样是可以查出张刚和张坤的两条数据。 因为文档里的数据分词后,都有带"张"的词,对请求的name分词后,同样是有张,所以可以匹配上。
#GET请求
http://127.0.0.1:9200/student/_search
#请求body
{
	"query": {
		"match": {
			"name":"张"
		}
	} 
}

你可能感兴趣的:(elasticsearch,大数据)