当前位置:网站首页>Es query syntax
Es query syntax
2022-06-29 07:22:00 【wending-Y】
List of articles
Data type description
text keyword text Word segmentation is used when storing ,keyword Can't
Sample object
@Document(indexName = "bu")
public class Person {
private @Id
String id;
@Field(type = FieldType.Keyword)
private String name;
private int age;
@Field(type = FieldType.Text)
private String country;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
1. Precise query
{
"from": 0,
"size": 10,
"query": {
"term": {
"name": {
"value": "shanghai"
}
}
}
}
java
// An highlighted block
QueryBuilder queryBuilder = QueryBuilders.termQuery("name", "shanghai");
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryBuilder);
List<Person> people = elasticsearchTemplate.queryForList(nativeSearchQuery, Person.class);
2. Fuzzy search
{
"query": {
"match": {
"country": {
"query": "china"
}
}
}
}
java
QueryBuilder queryBuilder = QueryBuilders.matchQuery("country", "china");
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryBuilder);
3. Multi word matching
Will match multiple words ,
| The operator | meaning |
|---|---|
| or | As long as there is a word match, it returns |
| and | Both words match |
{
"query": {
"match": {
"country": {
"query": "china,japan",
"operator": "and"
}
}
}
}
java
QueryBuilder queryBuilder = QueryBuilders.matchQuery("country", "china japan").operator(Operator.AND);
4. Multiple columns match the same value
{
"from": 0,
"size": 10,
"query": {
"multi_match": {
"fields": [
"country",
"name"
],
"query": "shanghai"
}
}
}
java
QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery("china","country","name");
5.must should usage
must Conditions must be met
should Conditions can be met , You can't be satisfied , Will be based on shoud Score the matching condition inside
“minimum_should_match”: 1 It is necessary to satisfy one of the values
expression country There must be japan&&id=10||country There must be japan&&id=11
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"country": {
"query": "japan"
}
}
}
],
"minimum_should_match": 1,
"should": [
{
"terms": {
"id": [
10,
11
]
}
}
]
}
}
}
java
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("country", "japan")).should(QueryBuilders.termsQuery("id", Arrays.asList(10, 11)));
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(boolQueryBuilder);
nativeSearchQuery.setMinScore(1);
6.must_not usage
must_not dissatisfaction
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"country": {
"query": "japan"
}
}
}
],
"must_not": [
{
"ids": {
"values": [10]
}
}
]
}
}
}
java
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("country", "japan"))
.mustNot(QueryBuilders.termQuery("id", 10));
7. Range query sort
{
"from": 0,
"size": 10,
"query": {
"range": {
"id": {
"gte": 10,
"lt": 16
}
}
},
"sort": [
{
"id.keyword": {
"order": "asc"
}
}
]
}
java
RangeQueryBuilder id = QueryBuilders.rangeQuery("id").gte(10).lt(12);
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(id);
nativeSearchQuery.addSort(new Sort(Sort.Direction.ASC,"id.keyword"));
8. duplicate removal
{
"_source": "name",
"collapse": {
"field": "name.keyword"
}
}
9.group by count
{
"size": 0,
"aggs": {
"count_name": {
"terms": {
"field": "name.keyword"
}
}
}
}
java
ElasticsearchTemplate elasticsearchTemplate = run.getBean(ElasticsearchTemplate.class);
TermsAggregationBuilder field = AggregationBuilders.terms("ss").field("id.keyword");
NativeSearchQuery build = new NativeSearchQueryBuilder().addAggregation(field).build();
AggregatedPage<Person> objects = elasticsearchTemplate.queryForPage(build, Person.class);
Terms terms = (Terms) objects.getAggregations().asList().get(0);
terms.getBuckets().stream().forEach(x -> {
System.out.println(x.getKeyAsString() + "," + x.getDocCount());
});
10.group by sum
{
"aggs": {
"colors": {
"terms": {
"field": "name.keyword",
"order": {
"sum_value": "asc"
}
},
"aggs": {
"sum_value": {
"sum": {
"field": "age"
}
}
}
}
}
}
java
ElasticsearchTemplate elasticsearchTemplate = run.getBean(ElasticsearchTemplate.class);
TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("a").field("name.keyword")
.subAggregation(AggregationBuilders.sum("sumAge").field("age"));
NativeSearchQuery build = new NativeSearchQueryBuilder().addAggregation(termsAggregationBuilder).build();
AggregatedPage<Person> objects = elasticsearchTemplate.queryForPage(build, Person.class);
Terms terms = (Terms) objects.getAggregations().asList().get(0);
terms.getBuckets().stream().forEach(x -> {
Sum sum = (Sum) x.getAggregations().getAsMap().get("sumAge");
System.out.println(x.getKeyAsString() + "," + sum.getValue());
});
边栏推荐
- Error: GPG check FAILED Once install MySQL
- QT STL type iterator
- 服装行业的CRM品牌供应商如何选型?
- 关于工作方法和高效工作的建议
- 多模态 —— Learnable pooling with Context Gating for video classification
- JDBC connects to the database and socket sends the client.
- Method of changing host name (permanent)
- 施工企业选择智慧工地的有效方法
- Digital IC Design - UART
- 国家安全局和CISA Kubernetes加固指南--1.1版的新内容
猜你喜欢
随机推荐
CI工具Jenkins安装配置教程
Using IPv6 to access remote desktop through public network
Introduction to Ceres Quartet
Livedata source code appreciation - basic use
利用IPv6實現公網訪問遠程桌面
NoSQL数据库之Redis(二):Redis配置文件介绍
消息队列之通过幂等设计和原子锁避免重复退款
【翻译】Bink如何为英国一些最大的银行的数字忠诚度交易提供动力
[translation] [Chapter 2 ③] mindshare PCI Express technology 3.0
uva11825
Webrtc series - 8-connectivity detection for network transmission
Redis of NoSQL database (I): Installation & Introduction
等保备案主体是谁?在当地网安进行备案是吗?
2022.6.27-----leetcode. five hundred and twenty-two
Domestic code hosting center code cloud
Message queue avoiding repeated refund by idempotent design and atomic lock
QT qframe details
Method of changing host name (permanent)
LiveData源码赏析 —— 基本使用
How to select CRM brand suppliers in garment industry?







