← Back to list

6.ES基本操作-查询

Published on: | Views: 48

查询所有文档

GET /$index/_search
{
    'query': {
        'match_all': {
            'boost': 1
        }
    }
}

$index: 索引名 $fieldName: 文档字段名 query: 指定查询条件 match_all: 指定匹配所有数据 boost: 指定返回的分值固定为1

精确查询(term)

GET /$index/_search
{
    'query': {
        'term': {
            '$fieldName': {
                'value': $fieldValue
            }
        }
    }
}

使用值$fieldValue精确查询$fieldName字段

多值精确查询(terms)

GET /$index/_search
{
    'query': {
        'terms': {
            '$fieldName': [$fieldValue1, $fieldValue2]
        }
    }
}

文本匹配查询(match)

会对关键词分词后再查询

GET /$index/_search
{
    'query': {
        'match': {
            '$fieldName': $fieldValue2
        }
    }
}

范围查询(range)

GET /$index/_search
{
    'query': {
        'range': {
            '$fieldName': {
                'gt': $value1,
                'lt': $value2,
            }
        }
    }
}

gt(>)和lt(<)是比较符,另外还有gte(>=), lte(<=)

非空查询(exists)

字段为空的判断: 值不存在 || 值为null || 值为[] || 值为[null]

GET /$index/_search
{
    'query': {
        'exists': {
            'field': '$fieldName'
        }
    }
}

多条件查询(bool)

https://www.elastic.co/guide/en/elasticsearch/reference/8.8/query-dsl-bool-query.html 由多个子查询构成 |子查询类型|功能| |-|-| |must|必须匹配此查询条件| |should|可以匹配此查询条件| |must not|必须不匹配此查询条件| |filter|必须匹配此条件,但结果不会打分|

查询语法

GET /$index/_search
{
    'query': {
        'bool': {
            '子查询类型': [
                {
                    子查询1
                },
                {
                    子查询2
                }
            ]
        }
    }
}

例如:

{
    'query': {
        'bool': {
            'must': [
                {
                    'term': {
                        'city': {
                            'value': '北京市'
                        }
                    }
                },
                {
                    'term': {
                        'business_district': {
                            'value': '大同胡同'
                        }
                    }
                }
            ]
        }
    }
}

should查询可以使用minimum_should_match指定最少需要匹配的项数。 filter查询不会打分,所有文档都是0,但是可以使用constant_score设置为固定分数

指定返回的字段列表

可以用_source在查询参数中指定要返回的字段列表,例如:

GET /$index/_search
{
    '_source':['title','city']
    'query': {
        'match_all': {
            'boost': 1
        }
    }
}

对结果分页

使用from和size参数分页 from从0开始, 示例

{
    'from': 0,
    'size': 10,
    'query': {
        'match_all': {
        }
    }
}