当前位置:网站首页>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());
});
边栏推荐
- Testing grpc service with grpcui
- CI工具Jenkins之二:搭建一个简单的CI项目
- Message queue avoiding repeated refund by idempotent design and atomic lock
- [answer all questions] CSDN question and answer function evaluation
- Qt QLineEdit详解
- jmeter 用beanshell导入自己jar包老是查找不到
- QT container class
- 消息队列之通过队列批处理退款订单
- 示波器 符号
- Database - Synonyms
猜你喜欢

CI工具Jenkins安装配置教程

数字ic设计——UART

What are the conditions for a high-quality public chain?

Utilisation d'IPv6 pour réaliser l'accès public au bureau distant

Tree drop-down selection box El select combined with El tree effect demo (sorting)

QT serial port programming

【科普资料】从科学精神到科学知识的材料

In vscade, how to use eslint to lint and format

IDEA 集成 码云

WordPress adds article topping, password protection, and privacy Tags
随机推荐
Better than postman! Apipost knows more about Chinese programmers! How delicious!
NoSQL数据库之Redis(一):安装 & 简介
Autosar SWC在Simulink中Parameter的使用
Spark RDD case: Statistics of daily new users
Markdown 技能树(7):分隔线及引用
Save token get token refresh token send header header
JVM系列之对象深度探秘
Shift/space studio "Aurora" project: building a villa in the sandbox metauniverse
systemd 管理node-exporter
LeetCode_ Dynamic programming_ Medium_ 91. decoding method
Illegal forward reference and enums
Introduction to NoSQL database
Comment choisir les fournisseurs de marques CRM dans l'industrie du vêtement?
Effective methods for construction enterprises to select smart construction sites
Twitter launches the test of anti abuse tool "safe mode" and adds enabling prompt
WebRTC系列-网络传输之8-连通性检测
GenICam GenTL 标准 ver1.5(3)第四章
反射修改final
Do you really understand "binder copy once"?
Ci tool Jenkins II: build a simple CI project