elasticsearch 操作
文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
客户端:https://www.elastic.co/guide/en/elasticsearch/client/index.html
API:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/search-request-from-size.html
.net
1.连接,项目中引用Nest包
var settings = new ConnectionSettings(new Uri("http://example.com:9200"))
.DefaultIndex("people");
var client = new ElasticClient(settings);
2.索引
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
var person = new Person
{
Id = ,
FirstName = "Martijn",
LastName = "Laarman"
}; var indexResponse = client.IndexDocument(person); var asyncIndexResponse = await client.IndexDocumentAsync(person);
3.查询
var searchResponse = client.Search<Person>(s => s
.From()
.Size()
.Query(q => q
.Match(m => m
.Field(f => f.FirstName)
.Query("Martijn")
)
)
); var people = searchResponse.Documents;
4.删除
var person = new Person
{
Id =
};
var deleteResponse= client.Delete<Person>(dept);
在kibana中操作
查看

删除

添加一个新的Index
public class StudentQuery
{
public int StudentId { get; set; }
public List<string> Items { get; set; }
}
var settings = new ConnectionSettings(new Uri("http://10.15.4.155:9200/")).DefaultIndex("student");
var client = new ElasticClient(settings);
for (int i = ; i < ; i++)
{
StudentQuery student = new StudentQuery();
student.StudentId = i;
student.Items = new List<string>();
student.Items.Add("Code"+i);
student.Items.Add("Name"+i);
student.Items.Add("CardId"+i);
student.Items.Add("IdentityId"+i);
var indexResponse = client.IndexDocument(student);
}
查询
var searchResponse = client.Search<StudentQuery>(s => s.
Query(q=>q.
Match(m=>m.
Field(f=>f.Items)
.Query("CardId1")
)
)
);
在kibana中查询
GET /student/studentquery/_search/
{
"query": {
"match": {
"items": {
"query": "Code8"
}
}
}
}

对同一字段多个值查询

或者使用term
GET /_search
{
"from" : 0, "size" : 10,
"query" : {
"term" : { "user" : "kimchy" }
}
}
这里要注意match和term的区别
Why doesn’t the term query match my document?
简单来说就是string类型的字段在index之前会已fulltext的方式被es进行默认分词,比如放入“基金交易”,用term来查“基金”可能就查不到,用match就可以。
Java
@Service
public class ElasticService {
@Value("${elastic.host}")
private String host;
@Value("${elastic.port}")
private int port; private RestHighLevelClient client; public void index(String index, List<MetisQuestion> list) throws Exception {
client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(host, port, "http")));
for(MetisQuestion o :list){
IndexRequest request = new IndexRequest(index,"doc");
ObjectMapper mapper=new ObjectMapper();
String json=mapper.writeValueAsString(o);
request.source(json, XContentType.JSON);
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
System.out.println(response.status());
}
} public void search(String index,String key){
client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(host, port, "http")));
SearchRequest searchRequest = new SearchRequest(index);
searchRequest.types("doc");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.termQuery("question", key));
searchRequest.source(sourceBuilder);
getResponse(searchRequest);
} public void search(String index,String key,String... values){
client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(host, port, "http")));
SearchRequest searchRequest = new SearchRequest(index);
searchRequest.types("doc");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.termsQuery(key,values));
sourceBuilder.size(5);
searchRequest.source(sourceBuilder);
getResponse(searchRequest);
} private void getResponse(SearchRequest searchRequest) {
try {
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
String sourceAsString = hit.getSourceAsString();
ObjectMapper mapper=new ObjectMapper();
MetisQuestion question=mapper.readValue(sourceAsString,MetisQuestion.class);
System.out.println(question.getQuestion());
}
} catch (IOException e) {
e.printStackTrace();
}
} }
elasticsearch 操作的更多相关文章
- Elasticsearch操作索引
目录 操作索引 1. 基本概念 2. 创建索引 2.1 语法 2.2查看索引设置 2.3.删除索引 2.4 映射配置 2.5 新增数据 2.6 修改数据 2.7 删除数据 3. 查询 3.1 基本查询 ...
- Elasticsearch操作Document文档
1.利用客户端操作Document文档数据 1.1 创建一个文档(创建数据的过程,向表中去添加数据) 请求方式:Post 请求地址:es所在IP:9200/索 ...
- python实现elasticsearch操作-CRUD API
python操作elasticsearch常用API 目录 目录 python操作elasticsearch常用API1.基础2.常见增删改操作创建更新删除3.查询操作查询拓展类实现es的CRUD操作 ...
- Elasticsearch系列(3):Elasticsearch操作入门
创建Index 新建Index,可以直接向Elastic服务器发送PUT请求,比如下面的命令创建了一个名为:logdb的Index. [root@elsearchserver ~]# curl -X ...
- 3.使用Spring Data ElasticSearch操作ElasticSearch(5.6.8版本)
1.引入maven坐标 <!--spring-data-elasticsearch--><dependency> <groupId>org.springframew ...
- Elasticsearch 2.3.3 JAVA api说明文档
原文地址:https://www.blog-china.cn/template\documentHtml\1484101683485.html 翻译作者:@青山常在人不老 加入翻译:cdcnsuper ...
- elasticsearch代码片段,及工具类SearchEsUtil.java
ElasticSearchClient.java package com.zbiti.framework.elasticsearch.utils; import java.util.Arrays; i ...
- 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能
第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...
- 第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中
第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中 前面我们讲到的elasticsearch( ...
随机推荐
- list.get(0)防止NPE
package com.chuangjin.p2p; import com.chuangjin.core.utils.JsonUtils; import java.util.ArrayList; im ...
- 得到一个文件夹中所有文件的名称的几个方法(命令指示符, C++, python)
因为最近一直需要获得一个文件下的所有图片的名称,自己又总是跨平台使用,所以把自己在不同环境之下使用的方法总结如下 1.cmd 模式下 优点:简单 例如,我想将一个文件夹下的所有".jpg&q ...
- C++实现文件内字符数、单词数、行数的统计
先给出github上的代码链接以及项目需求 1. 项目简介 这个项目的需求可以概括为:对程序设计语言源文件统计字符数.单词数.行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处 ...
- cerr与cout区别
语言:C++ 一.简介 平常常会用的主要有三个:cout.cerr.clog,首先简单介绍下三者. 这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论): cout:写到标准 ...
- 压力测试工具 Apache_jmeter软件配置+TCP示例说明
该软件jmeter是Apache官方开源压力测试软件. jmeter官网:http://jmeter.apache.org/ . 本文使用的版本是 3.0版本, 它需要jdk7及以上版本支持. 网 ...
- SSH通过密钥登陆
A服务器上操作 ssh-keygen -t rsa/dsa 后面所带参数rsa/dsa为加密方式,默认为dsa [root@localhost ~]# ssh-keygen Generating pu ...
- mysql thread pool
转自:http://blog.csdn.net/wyzxg/article/details/8258033 mysql 线程处理流程图: Mysql支持单线程和多线程两种连接线程模式,如果单线程,则在 ...
- Paper | 学习多任务中的最佳分/ 合结构(十字绣结构)
目录 1. 问题 2. 十字绣结构(Cross-stitch architecture) 3. 实验设计 论文:Cross-stitch Networks for Multi-task Learnin ...
- Elasticsearch System Call Filters Failed to Install
Elasticsearch starts to run, error occurs: : system call filters failed to install; check the logs a ...
- ES6 generators in depth 一(译)
今天在学习redux-saga时,外部链接推荐了这篇文章ES6 generators in depth,所以翻译的同时也可以加深一下对Generator的理解. 这里对原文一些只能在高版本现代浏览器使 ...