«

Elasticsearch DSL语言查询与过滤

晨曦 发布于 阅读:147 Elasticsearch


Elasticsearch中查询有两种方式:

1.简易版查询
2.JSON完整的请求体,称为结构化查询(DSL)
DSL是发送POST请求传JSON格式数据进行查询,灵活性高。

Term与Match查询区别:

Term:不会对该字段进行分词查询,采用精确匹配查询方式
Match:根据该字段的分词器进行分词查询,采用模糊查询方式

创建测试数据

PUT 索引/类型/id

PUT chenxi/user/1
{
"name":"zhangsan",
"age" : 1,
"hobby": "唱歌"
}

PUT chenxi/user/2
{
"name":"lisi",
"age" : 2,
"hobby": "打篮球"
}

PUT chenxi/user/3
{
"name":"wangwu",
"age" : 3,
"hobby": "打乒乓球"
}

查询所有document,验证是否创建成功

GET chenxi/user/_search

DSL查询

Match精确匹配

GET chenxi/user/_search
{
"query":{
"term": {
"name":"zhang"
}
}
}

DSL查询

Term模糊查询

GET chenxi/user/_search
{
"query":{
"term": {
"name":"zhang"
}
}
}

GET chenxi/user/_search
{
""
"query":{
"term": {
"name":"zhang"
}
}
}

Elasticsearch