创建索引:
PUT /es_test
查询索引
GET /es_test
删除索引
DELETE /es_test
_search 查询
GET /es_test/user/_search
GET /es_test/user/_search?q=name:yawn&age[10 TO 20]&sort=age:desc
GET /es_test/user/_search?q=name:yawn&from=0&size=3
_search DSL查询
GET /index/type/_search
{
"query":{
"term": {
"name": "yawn"
}
}
}
// match支持分词查询
GET /index/type/_search
{
"query":{
"match": {
"name": "yawn"
}
}
}
term与match的区别:
term不会对查询的关键词进行分词,而是进行精确匹配,match会先对关键词进行分词,再查询。
对查询词进行分词:
GET /_analyze
{
"analyzer": "standard",
"text": "奥迪a4l"
}
指定分词器:
GET /_analyze
{
"analyzer": "ik_smart",
"text": "奥迪a4l"
}
_mapping文档映射:
查询映射:
GET /es_test/user/_mapping
GET /es_test/_mapping
- 动态映射:根据文档的字段,自动映射存储的类型,eg:数值型的会被映射为long;
- 静态映射:事先定义好映射。
String类型分为text和keyword,其中text类型的字段可以进行分词查询,keyword类型的字段不会进行分词。
自定义文档映射(静态映射):
POST /es_test/_mapping/user
{
"user": {
"properties": {
"name": {
"type" : "string",
"index" : "not_analyzed"
},
"age": {
"type": "integer"
},
"des": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart",
}
}
}
}
not_analyzed
表示该字段不会被分析,analyzer
表示需要使用的分词器。
ik分词器有两种分词模式:ik_max_word和ik_smart模式。
1、ik_max_word
会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。
2、ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。