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, 但中文下一個字就是一個詞, 因此通常用不到python

{
    "query": {
        "match": {
            "field": {  # 查詢field字段包含以 50 開頭的詞的文檔
                "query": "50",
                "max_expansions": 10, 最多向後匹配的字符數
            }
        }
    }
}

multi_match 同時匹配多字段

點擊查看官方文檔json

{
    "query": {
        "match": {
            "query": "2018",
            "fields": ["field1", "field2"],
            # "fields": ["*_name"],  # 支持使用通配符匹配字段
            # "fields": ["field1 ^ 3", "field2"],  # 使用 ^ 提高某個字段的重要性
        }
    }
}
相關文章
相關標籤/搜索