ES查询
ES支持多种方式查询,这里介绍几种常用的,其实原理都是一样的
服务器curl
postman
kibana
kibana安装
因为这个有提示功能,所以推荐使用这个
# 下载6.6.0
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz
# 解压
tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz
# 修改配置文件
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
# 配置环境变量
export KIBANA_HOME=/opt/kibana/kibana-6.0.0-linux-x86_64
export PATH=$PATH:$KIBANA_HOME/bin
#启动
bin/kibana &
index操作
# 添加索引
curl -X PUT 'localhost:9200/weather'
# 看到以下信息则安装成功
# {"acknowledged":true,"shards_acknowledged":true,"index":"weather"}
# 删除index
curl -X DELETE 'localhost:9200/weather'
# 查看es自动创建的mapping
http://localhost:9200/store/employee/_mapping
查询使用json
我全部写在一个json里面,可以自行添加,减少
# 搜索
# 常用的参数在这里 可以自行拼接
GET indexName/_search?from=1&size=10&scroll=1m
{ #返回版本信息
"version": true,
# 解释计算得分
"explain":true,
"from": 0,
"size": 20,
"_source": {
"includes": ["c_*","d_cjsj"],
"excludes": ["c_y*","c_x*","c_p*","c_b*"]
},
#进行切片 用于处理数据量过大的时候
"slice": {
"id": 0,
"max": 3
},
"query": {
# match会对关键词进行分词再查询
"match": {
"name": {
"query": "商1"
, "operator": "and"
}
},
"term": {
"tbName": "t_xy_kc"
},
# 多字段匹配 注意和term只能存在一个
"terms": {
"c_kcmc": [
"测试",
"V"
]
},
# bool过滤器 注意和term只能存在一个
"bool": {
"filter":{
"term":
{"tbName":"t_xy_kc"}
}
}
},"highlight": {
"fields": {
"c_kcmc":{
"force_source":"true"
}
}},
"sort": [
{
"d_cjsj": {
"order": "desc"
},
{"age":"desc"},
# 这里 order用作num类型 min max avg sum median(中位数)
{"price":{"order":"asc","mode":"avg"}}
}
],
# 自定义script 定义脚本
"script_fields": {
"test": {
"script": "params['_source']['c_kcmc']"
}
},
# 对匹配字段的tokern进行高亮
"highlight": {
"fields": {
"c_kcmc":{
"force_source":"true"
}
}},
# 为某些字段格式化 一般支持数字和日期 也可以在mapping中定义
"docvalue_fields": [{
"field":"d_cjsj",
"format":"yyyy-MM-dd"
}]
}
分词器测试
#分词器测试 默认标准分词器
GET /_analyze
{
"analyzer" : "standard",
"filter" : ["lowercase"],
"text" : ["this is a test", "the second text"]
}
# ik中文分词器
GET /_analyze
{
"tokenizer" : "keyword",
"filter": ["浙江"],
"explain":true,
"analyzer" : "ik_max_word",
"text" : "六一儿童节快乐"
}