最近公司在做用户画像,后面搭建es集群,为了实现根据标签查询用户的使用。最后的hive表导入到es查询使用。
后面肯定不是用es原生API的方式进行查询的,那么http方式的查询es是怎么样呢?
首先知道es集群的ip地址,默认端口9200。
1.根据id精准查询:
http://192.168.100.60:9200/index_primary_whole/std_index/253fa79b377709705b2086c124cbd478?pretty
说明:pretty参数表示以json格式展示
2.根据某个字段精准查询:
http://192.168.100.60:9200/index_primary_whole/std_index/_search?pretty&q=sqid:ea6d9bc646673c91558b9757c7afad37
说明:多个条件之间用&符号链接
根据标签筛选用户
3.根据某个字段精准查询:
http://192.168.100.60:9200/index_primary_whole/std_index/_search?pretty -d ‘{“query”:{“term”:{“sqid”:“ea6d9bc646673c91558b9757c7afad37”}}}’
4.根据某个字段分组查询:
curl -H ‘Content-Type: application/json’ -XGET ‘http://ESip:9200/index_name/table_name/_search?pretty’ -d ’
{
“size”: 0,
“aggs”: {
“provinces”: {
“terms”: {
“field”: “location_prov.keyword”
}
}
}
}’
注意:如果你之前没有相关经验直接查询的话,会有下面的报错的。
{
“error” : “Content-Type header [application/x-www-form-urlencoded] is not supported”,
“status” : 406
}
============================================================
这个问题,是在报文Content-type的参数:application/x-www-form-urlencoded不支持Json发送。需要改成application/Json
所以需要添加参数 ; -H ‘Content-Type: application/json’
这里是按照省份进行分组查询的结果: