[學習ES系列]-4.ElasticSearch基礎交互-基礎查詢與高級查詢

基礎查詢

POST http://127.0.0.1:9200/book/_search緩存

  • 1.簡單查詢
{
    "query":{
        "match_all":{}
    }
}
  • 2.條件查詢
{
    "query":{
        "match":{
            "title":"入門到精通"
        }
    },
    "from":1,
    "size":5,
    "sort":{
        "publish_date":{
            "order":"asc"
        }
    }

}
  • 3.聚合查詢
{
    "aggs":{
        "group_by_word_count":{
            "terms":{
                "field":"word_count"
            }
        },
        "group_by_publish_date":{
            "terms":{
                "field":"publish_date"
            }
        }
    }

}
{
    "aggs":{
        "total_word_count":{
            "stats":{
                "field":"word_count"
            }
        }
    }
}
{
    "aggs":{
        "max_word_count":{
            "max":{
                "field":"word_count"
            }
        }
    }
}

高級查詢

1.子條件查詢 又稱葉子條件查詢(特定字段查詢所指特定的值)ide

  • 1.1Query Context
    在查詢的過程當中,除了判斷文檔是否知足查詢條件外,ES還會計算一個_score來標識匹配的程度,旨在判斷目標文檔和查詢條件的匹配程度有多好。
1.1.1全文本查詢:針對文本類型(text)的數據
  • --1.模糊匹配
{
    "query":{
        "match":{
            "title":"PHP從入門到精通"
        }
    }
}

會匹配PHP、從入門到精通兩個關鍵詞code

  • --2.習語匹配
{
    "query":{
        "match_phrase":{
            "title":"PHP從入門到精通"
        }
    }
}
  • --3.多個字段模糊匹配查詢
{
    "query":{
        "multi_match":{
            "query":"PHP",
            "fields":["title","author"]
        }
    }
}

查詢title或author中包含PHP關鍵字文檔

  • --4.1語法查詢
{
    "query":{
        "query_string":{
            "query":"(PHP AND 入門) OR 普改"
        }
    }
}

文本字段同時包含PHP和入門兩個關鍵詞或者文本字段包含普改get

  • --4.2查詢多字段(指定字段查詢)
{
    "query":{
        "query_string":{
            "query":"PHP",
            "fields":["title","author"]
        }
    }
}
  • 1.1.2字段級別查詢:針對結構化數據,如數字、日期等
  • --1.指定字段精確查詢
{
    "query":{
        "term":{
            "author":"普改"
        }
    }
}
  • --2.範圍查詢
  • --2.1數字範圍
{
    "query":{
        "range":{
            "word_count":{
                "gte":"170000",
                "lte":"200000"
            }
        }
    }
}
  • --2.2日期範圍
{
    "query":{
        "range":{
            "publish_date":{
                "gte":"2018-01-01",
                "lte":"2019-12-30"
            }
        }
    }
}
{
    "query":{
        "range":{
            "publish_date":{
                "gte":"2019-01-01",
                "lte":"now"
            }
        }
    }
}

1.2Filter Context
在查詢過程當中,只判斷該文檔是否知足條件,只有yes或者no.
(query判斷yes或者no,還會_score匹配程度)string

ES會對查詢結果作緩存,故速度比Query要快it

{
    "query":{
        "bool":{
            "filter":{
                "term":{
                    "author":"普改"
                }

            }
        }
    }
}

2.複合條件查詢(以必定的邏輯組合子查詢查詢)入門

{
    "query":{
        "bool":{
            "must":{
                "match":{
                    "title":"PHP從入門到精通"
                }
            },
            "filter":{
                "range":{
                    "word_count":{
                        "gt":170000
                    }
                }
            }

        }
    },
    "from":1,
    "size":1
}
相關文章
相關標籤/搜索