• es查询--请求body


    查询的JSON结构
    普通查询
    {
        "query": {  # 查询条件
            "match_all": {}  //匹配所有文档, 所有 _score 为1.0
            # "match_all": {"boost": 1.2}  # 改变 _score
            # "match_none" {}  # 不匹配任何文档
        },
        "_source": ["field1", "field2"]  # 指定查询结果返回的字段, 不指定返回所有字段
        "size": 10  # 返回10条结果, 默认10
        "from": 10  # 从第10条(索引从0开始)开始返回, 默认0
        "sort": {  # 指定排序规则, 不指定按照相似度得分降序排序
            "field": {"order": "desc"}  # field字段降序排序
        }
    }
    
    多条件查询
    {
        "query": {
            "bool": {  # 合并多个查询
                "must": [  # field字段包含v1且包含v2
                    {"match": {"field": "v1"}},
                    {"match": {"field": "v2"}}
                ],
                "should": [  # field字段包含v1或包含v2
                    {"match": {"field": "v1"}},
                    {"match": {"field": "v2"}}
                ],
                "must_not": [  # field字段既不包含v1也不包含v2
                    {"match": {"field": "v1"}},
                    {"match": {"field": "v2"}}
                ],
                "filter": [  # 过滤, 过滤中的条件不会影响文档得分且可以被缓存
                    {
                        "range": {  # 范围查询, 支持 gt, gte, lt, lte
                            "field": {   # field >= 20000 and field <= 30000
                                "gte": 20000,
                                "lte": 30000
                            }
                        }
                    },
                    {"term": {"field": "v1"}},  # field字段包含v1
                ]
            }
        }
    }
    
    全文查询
    • match 模糊匹配和短语或邻近查询
    • match_phrase 匹配精确短语或单词邻近匹配
    • match_phrase_prefix 对最后一个单词进行通配符搜索
    • multi_match 多字段查询
    • common 一个更专业的查询,它更多地优先考虑不常见的单词
    • query_string 支持紧凑的Lucene 查询字符串语法,允许您在单个查询字符串中指定AND | OR | NOT条件和多字段搜索。仅限专家用户。
    • simple_query_string 一种更简单,更健壮的query_string语法版本,适合直接向用户公开。
    • intervals 全文查询,允许对匹配术语的排序和接近度进行细粒度控制

    body

    query

    match 模糊搜索

    {
        "query": {
            "match": {
                "field": "四个 图形"  # field字段包含 "四个" 或 "图形"
            }
        }
    }
    
    {
        "query": {
            "match": {
                "field": {  # field字段包含 "四个" 且包含 "图形"
                    "query": "四个 图形",
                    "operator": "and",  # 支持 and 和 or 默认为 or
                    "zero_terms_query": "all",  # "none" or "all", 当查询结果为空时, 展示所有文档
                    "cutoff_frequency": 0.001,  # 将查询分解成两组,一组高频一组低频
                    "auto_generate_synonyms_phrase_query": False,  # 近似词相关配置
                }
            }
        }
    }
    

    match_phrase 短文本搜索

    {
        "query": {
            "match": {
                "field": {  # field字段包含 "四个图形" 的文档(所匹配文本之间允许有标点但不能有字词)
                    "query": "四个 图形",
                    "zero_terms_query": "all",  # "none" or "all", 当查询结果为空时, 展示所有文档
                    "analyzer": "my_analyzer",  # 
                }
            }
        }
    }
    

    match_phrase_prefix 短文本搜索, 支持前缀匹配

    比如 50 可以匹配到 500, 但中文下一个字就是一个词, 所以一般用不到

    {
        "query": {
            "match": {
                "field": {  # 查询field字段包含以 50 开头的词的文档
                    "query": "50",
                    "max_expansions": 10, 最多向后匹配的字符数
                }
            }
        }
    }
    

    multi_match 同时匹配多字段

    点击查看官方文档

    {
        "query": {
            "match": {
                "query": "2018",
                "fields": ["field1", "field2"],
                # "fields": ["*_name"],  # 支持使用通配符匹配字段
                # "fields": ["field1 ^ 3", "field2"],  # 使用 ^ 提升某个字段的重要性
            }
        }
    }
    
  • 相关阅读:
    HDU 1455 http://acm.hdu.edu.cn/showproblem.php?pid=1455
    UVA 11300 Spreading the Wealth
    HDU 1702 http://acm.hdu.edu.cn/showproblem.php?pid=1702
    栈的简单应用 HDU 1022 http://acm.hdu.edu.cn/showproblem.php?pid=1022
    HDU 1702 队列与栈的简单运用http://acm.hdu.edu.cn/showproblem.php?pid=1702
    背包模板(01背包,完全背包,多重背包)
    XSS内容拓展--伪造你的IP
    Linux文件系统
    2015阿里校招研发工程师笔试题
    鸟哥的私房菜复习一
  • 原文地址:https://www.cnblogs.com/P--K/p/11031550.html
Copyright © 2020-2023  润新知