文档: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 操作的更多相关文章

  1. Elasticsearch操作索引

    目录 操作索引 1. 基本概念 2. 创建索引 2.1 语法 2.2查看索引设置 2.3.删除索引 2.4 映射配置 2.5 新增数据 2.6 修改数据 2.7 删除数据 3. 查询 3.1 基本查询 ...

  2. Elasticsearch操作Document文档

    1.利用客户端操作Document文档数据        1.1 创建一个文档(创建数据的过程,向表中去添加数据)            请求方式:Post    请求地址:es所在IP:9200/索 ...

  3. python实现elasticsearch操作-CRUD API

    python操作elasticsearch常用API 目录 目录 python操作elasticsearch常用API1.基础2.常见增删改操作创建更新删除3.查询操作查询拓展类实现es的CRUD操作 ...

  4. Elasticsearch系列(3):Elasticsearch操作入门

    创建Index 新建Index,可以直接向Elastic服务器发送PUT请求,比如下面的命令创建了一个名为:logdb的Index. [root@elsearchserver ~]# curl -X ...

  5. 3.使用Spring Data ElasticSearch操作ElasticSearch(5.6.8版本)

    1.引入maven坐标 <!--spring-data-elasticsearch--><dependency> <groupId>org.springframew ...

  6. Elasticsearch 2.3.3 JAVA api说明文档

    原文地址:https://www.blog-china.cn/template\documentHtml\1484101683485.html 翻译作者:@青山常在人不老 加入翻译:cdcnsuper ...

  7. elasticsearch代码片段,及工具类SearchEsUtil.java

    ElasticSearchClient.java package com.zbiti.framework.elasticsearch.utils; import java.util.Arrays; i ...

  8. 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能

    第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...

  9. 第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中

    第三百六十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)scrapy写入数据到elasticsearch中 前面我们讲到的elasticsearch( ...

随机推荐

  1. Anaconda的安装及使用

    总结的很清楚,做个记录. http://python.jobbole.com/86236/

  2. LoadRunner简单介绍----性能自动化测试工具

    在做性能测试中,我认为技术可以说是武功心法,工具则是一把利剑,有一把好的利剑可以帮助自己更好的完成性能测试工作.在这里简单介绍一下LoadRunner,带大家一起来认识一下这把尚方宝剑. 一.性能测试 ...

  3. flink 读取kafka 数据,partition分配

    每个并发有个编号,只会读取kafka partition  % 总并发数 == 编号 的分区   如: 6 分区, 4个并发 分区: p0 p1 p2 p3 p4 p5 并发: 0 1 2 3    ...

  4. firebug定位工具很强大

    firebug这个工具很强大,如果实在找不到自己想要的元素,就安装firebug这个定位工具妥妥的

  5. Kalman Filters

    |—定位—|—蒙特卡洛方法(定位自身) |              |—卡尔曼滤波器(定位其他车辆) |—高斯函数 |—循环两个过程—|—测量(测量更新) |                     ...

  6. java反射查看jar包中所有的类名方法名

    不反编译,不用其他工具,用java反射查看jar包中所有的类名方法名,网上很多都报错,下面这个你试试看:话不多说直接撸代码: import java.lang.reflect.Field; impor ...

  7. linux vi如何保存编辑的文件

    按ESC键回到命令模式,输入:w保存即可,或者输入:wq!保存文件并退出. 以下是保存命令: :w   保存文件但不退出vi . :w file 将修改另外保存到file中,不退出vi . :w!   ...

  8. PowerShell实现简单的搜索地区功能

    Add-Type -AssemblyName Microsoft.VisualBasic $VBI = [Microsoft.VisualBasic.Interaction] function Sea ...

  9. js数组中容易误用的一些方法

    1.every和some 两个方法的参数都是一个函数,函数的有3个参数,依次是当前值value,索引index,数组array every判断数据中的每一项是否满足某个条件,如果满足就返回true,有 ...

  10. [转]linux VLAN配置(vconfig)

    1.安装vlan(vconfig)和加载8021q模块 #aptitude install vlan #modprobe 8021q 2.使用linux vconfig命令配置vlan #vconfi ...