elasticSearch之查询
"you know, for search“”,这是es的口号,所以es最核心的功能就是查询,es中查询简单来说有两种:
1.子条件查询:即特定字段查询所指特定值。子条件查询又分为query context和filter content
query content:在查询过程中,除了判断文档是否满足条件外,还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件匹配的有多好
query content又包括全文本查询(针对文本类型数据)和字段级别的查询(针对结构化数据,如数字,日期)
以下为全文本查询:
模糊匹配:结果会返回包含“ElasticSearch”,"入门",“ElasticSearch入门”这三个关键词的信息
{
“query”:{
"match":{
"title":"ElasticSearch入门"
}
}
}
但是如果我只想查询包含“elasticSearch入门”这个关键词的信息,就用到习语查询
{
“query”:{
"match_phrase":{
"title":"ElasticSearch入门"
}
}
}
多个字段的查询:会查询出author和title中包含elasticSearch的信息
{
“query”:{
"multi_match":{
"query":"elasticSearch"
"fields":["author","title"]
}
}
}
语法查询:查询条件遵循某种语法,如下返回包含“elasticSearch”和”入门”或者包含“python”的内容
{
“query”:{
"query_string":{
"query":"(elasticSearch AND 入门) OR python"
}
}
}
以下为字段查询:
查询作者是张三的书籍
{
“query”:{
"term":{
"author":"张三"
}
}
}
查询word_count字段在1000到2000的书籍
{
“query”:{
"range":{
"word_count":{
"gte":1000,
"lte":2000
}
}
}
}
filter content:在查询过程中,只判断改文档是否满足条件,只有Yes或者No,es会对filter查询结果做缓存,所以更快些
以下返回“word_count”为1000的书籍
{
“query”:{
"bool":{
"filter":{
"term":{
"word_count":1000
}
}
}
}
}

浙公网安备 33010602011771号