(14)ElasticSearch 基本查詢(中文查詢)


  1、准備數據

PUT /lib
{
    "settings":{
        "number_of_shards":3,
        "number_of_replicas":0
    },
    "mappings":{
        "user":{
            "properties":{
                "name":{
                    "type":"text",
                    "analyzer":"ik_max_word"
                },
                "address":{
                    "type":"text",
                    "analyzer":"ik_max_word"
                },
                "age":{
                    "type":"integer"
                },
                "interests":{
                    "type":"text",
                    "analyzer":"ik_max_word"
                },
                "birthday":{
                    "type":"date"
                }
            }
        }
    }
}
PUT /lib/user/1
{
    "name":"趙六",
    "address":"黑龍江省鐵嶺",
    "age":50,
    "birthday":"1970-12-12",
    "interests":"喜歡喝酒,鍛煉,說相聲"
}

PUT /lib/user/2
{
    "name":"趙明",
    "address":"北京海淀區清河",
    "age":20,
    "birthday":"1998-10-12",
    "interests":"喜歡喝酒,鍛煉,唱歌"
}

PUT /lib/user/3
{
    "name":"lisi",
    "address":"北京海淀區清河",
    "age":23,
    "birthday":"1998-10-12",
    "interests":"喜歡喝酒,鍛煉,唱歌"
}

PUT /lib/user/4
{
    "name":"王五",
    "address":"北京海淀區清河",
    "age":26,
    "birthday":"1995-10-12",
    "interests":"喜歡編程,聽音樂,旅游"
}

PUT /lib/user/5
{
    "name":"張三",
    "address":"北京海淀區清河",
    "age":29,
    "birthday":"1988-10-12",
    "interests":"喜歡攝影,聽音樂,跳舞"
}

  2、操作演示

  1)查詢出name中帶有趙字的,趙明和趙六的文檔

GET /lib/user/_search/
{
    "query":{
        "term":{"name":""}
    }
}
GET /lib/user/_search/
{
    "query":{
        "match":{"name":""}
    }
}

  2)查詢出interests中含有喝酒或者唱歌的文檔

GET /lib/user/_search/
{
    "query":{
        "terms":{
            "interests":["喝酒","唱歌"]
        }
    }
}

  3)查詢出interests中含有喝酒或者唱歌的文檔,從下標為0開始,只查詢出兩個

GET /lib/user/_search/
{
    "from":0,
    "size":2,
    "query":{
        "terms":{
            "interests":["喝酒","唱歌"]
        }
    }
}

  4)查詢出interests中含有喝酒或者唱歌的文檔,並且 顯示版本號

GET /lib/user/_search/
{
    "version":true,
    "query":{
        "terms":{
            "interests":["喝酒","唱歌"]
        }
    }
}

  5)查詢出name含有趙或者含有六的文檔,會查詢出趙明和趙六,因為match會分詞。

GET /lib/user/_search/
{
    "query":{
        "match":{
            "name":"趙六"
        }
    }
}

  6)查詢出age是20的文檔,結果顯示趙明,數字型不分詞。

GET /lib/user/_search/
{
    "query":{
        "match":{
            "age":20
        }
    }
}

  7)查詢出所有文檔

GET /lib/user/_search/
{
    "query":{
        "match_all":{}
    }
}

  8)多字段查詢multi_match,字段name或者interests中含有唱歌的都會查詢出來

GET /lib/user/_search/
{
    "query":{
        "multi_match":{
            "query":"唱歌",
            "fields":["interests","name"]
        }
    }
}

  9)短語匹配查詢match_phrase,關鍵字作為一個短語,必須完全匹配,如下,必須含有“鍛煉,說相聲”這個短語才能查到

GET /lib/user/_search/
{
    "query":{
        "match_phrase":{
            "interests":"鍛煉,說相聲"
        }
    }
}

  10)指定返回的字段 _source,如下,返回的結果中只有 address和 name

GET /lib/user/_search/
{
    "_source":["address","name"],
    "query":{
        "match":{
            "interests":"唱歌"
        }
    }
}

  11)前綴匹配查詢 match_phrase_prefix,查詢name,以“趙”開頭

GET /lib/user/_search/
{
    "query":{
        "match_phrase_prefix":{
            "name":{"query":""}
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM