9300 :集群内部通信

9200:http访问端口

老版本

索引操作

创建索引

put形式发送http://127.0.0.1:9200/索引名称

查看索引

get形式发送http://127.0.0.1:9200/索引名称

查看所有索引http://127.0.0.1:9200/_cat/indices?v

删除索引

delete形式发送http://127.0.0.1:9200/索引名称

文档操作

创建文档

  • post形式发送http://127.0.0.1:9200/索引名称/_doc/自定义id

  • ```json
    请求体中包含json数据
    {
    内容
    }


    #### 获取文档数据

    以`get`形式发送`http://127.0.0.1:9200/索引名称/_doc/自定义id`

    以`get`形式发送`http://127.0.0.1:9200/索引名称/_search`获取所有

    #### 修改文档

    ##### 全量修改

    - 以`put`形式发送`http://127.0.0.1:9200/索引名称/_doc/自定义id`

    - ```json
    请求体中包含json数据
    {
    内容
    }
局部修改
  • post形式发送http://127.0.0.1:9200/索引名称/_update/自定义id

  • ```json
    请求体中包含json数据
    {
    “doc”:{
    需要修改的内容
    }
    }


    #### 删除文档

    以`delete`形式发送`http://127.0.0.1:9200/索引名称/_doc/自定义id`

    ### 查询

    #### 条件查询

    1. 以`get`形式发送`http://127.0.0.1:9200/索引名称/_search?q=Json键值对`

    2. - 以`get`形式发送`http://127.0.0.1:9200/索引名称/_search`

    - ```json
    请求体中包含json数据
    {
    "query":{
    "match":{
    键值对(这时已经被进行分词操作了)
    }
    }
    }
    • ```json
      请求体中包含json数据
      {
      “query”:{
      “match_all”:{
      }
      }
      }

      3. - 以`get`形式发送`http://127.0.0.1:9200/索引名称/_search`

      - ```json
      请求体中包含json数据
      {
      "query":{
      "match":{
      键值对
      }
      },
      "from":开始索引,
      "size":查询多少数据,
      "source":[所需要的字段],
      "sort":{
      根据哪个字段排序:{
      "order":排序方式 (asc,desc)
      }
      }
      }

多条件查询

  • get形式发送http://127.0.0.1:9200/索引名称/_search

  • ```json
    请求体中包含json数据
    {
    “query”:{
    “bool”:{
    “must”:[(must表示必须,should表示或者)
    {
    “match”:{
    需要匹配的键值对
    }
    },
    {
    “match”:{
    需要匹配的键值对
    }
    },
    }
    ],
    “filter”:{
    “range”:{
    需要查询范围的字段:{
    “gt”:数值
    }
    }
    }
    }
    },
    “highlight”:{
    “fields”:{
    字段:{}


    }
    }
    }


    #### 聚合查询

    - 以`get`形式发送`http://127.0.0.1:9200/索引名称/_search`

    - ```json
    {
    "aggs":{
    分组名称:{
    "terms":{
    "field":分组字段
    }
    },
    平均值名称:{
    "terms":{
    "field":分组字段
    }
    }

    }
    }

elasticsearch

安装es

  1. 下载地址:Elasticsearch:官方分布式搜索和分析引擎 | Elastic
  2. 开启跨域支持
http.cors.enabled: true
http.cors.allow-origin: "*"

安装可视化插件

  1. 下载地址: elasticsearch-head
  2. 解压进入文件夹执行cnpm install
  3. 执行npm run start

安装Kibana

  1. 下载地址 Kibana:数据的探索、可视化和分析 | Elastic

  2. 配置文件汉化i18n.locale: "zh-CN"

  3. 使用

下载ik分词器

  1. 下载地址 Release v7.6.1 · medcl/elasticsearch-analysis-ik (github.com)

  2. 解压至elasticsearch的plugins中

  3. 配置ik分词器

    创建自定义.dic文件

    IKAnalyzer.yml文件配置自定义字典

Rest风格操作

put /索引名/~类型~/id

put /test1/type1/1
{
"name":"kuang",
"age":21
}
put /test2
{
"mapping":{
"properties":{
"name":{
"type":"test"
},
"age":{
"type":"long"
},
"birthday":{
"type":"date"
}
}
}
}

get /索引名[~类型~][id]

post /索引名/~类型~/id/_update

springboot

<!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.6.1</version>
</dependency>

@Configuration
public class ElasticSearchConfig {
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost",9200,"http")
)
);
return client;

}
}
@Autowired
@Qualifier("restHighLevelClient")
private RestHighLevelClient client;
@Test
void testCreateIndex() throws IOException {
CreateIndexRequest request = new CreateIndexRequest("kuang_index");
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println(response);
}
@Test
void testAddDocument() throws IOException {
User user = new User("zhangsan",18);
// 创建请求
IndexRequest request = new IndexRequest("kuang_index");
// 设置规则put /kuang_index/_doc/1
request.id("1");
// 设置超时时间
request.timeout("1s");
// 将数据放入请求
IndexRequest source = request.source(JSON.toJSONString(user), XContentType.JSON);
// 客户端发送请求
IndexResponse response = client.index(request, RequestOptions.DEFAULT);


}
@Test
void testGetDocument() throws IOException {
// 创建请求 get /kuang_index/_doc/1
GetRequest request = new GetRequest("kuang_index","1");
// 只获取_source的内容
request.fetchSourceContext(new FetchSourceContext(false));
request.storedFields("_none");
// 判断文档是否存在
boolean ExistResult = client.exists(request, RequestOptions.DEFAULT);
// 获取文档内容
GetResponse response = client.get(request, RequestOptions.DEFAULT);

}