Elasticsearch query里match具体用法举个例子
时间: 2023-06-04 12:05:02 浏览: 76
好的,关于Elasticsearch query里match的具体用法,举个例子来讲解一下:比如我要查询一篇文章里是否包含关键词“Elasticsearch”,那么可以使用以下的match查询语句:
```
{
"query": {
"match": {
"content": "Elasticsearch"
}
}
}
```
其中,content是需要查询的字段,Elasticsearch是需要查询的关键词。这个查询语句会匹配所有content字段中包含“Elasticsearch”的文档。
相关问题
在 Elasticsearch 中,size 和 from的用法,举个例子
在 Elasticsearch 中,size 和 from 是用来控制查询结果的数量和偏移量的参数。
- size:控制返回的结果数量,默认为10。
- from:控制返回结果的偏移量,默认为0。
以下是一个例子:
假设我们有一个名为 “blog” 的索引,其中包含了一些博客文章。我们想要查询最近发布的5篇文章,可以使用以下查询:
```
GET /blog/_search
{
"query": {
"match_all": {}
},
"sort": {
"publish_date": {
"order": "desc"
}
},
"size": 5,
"from": 0
}
```
在这个查询中,我们使用了 match_all 查询来匹配所有的文档,并按照 publish_date 字段的降序排序。我们还设置了 size 参数为5和 from 参数为0,以便返回最近发布的5篇文章。
ES查询matchPhrase匹配多个字段
在 Elasticsearch 中,可以使用 multi_match 查询来匹配多个字段,然后再使用 match_phrase 查询来进行精确匹配。
具体的代码可以参考下面这个例子:
```java
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchPhraseQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
TransportClient client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery("search phrase", "field1", "field2", "field3");
MatchPhraseQueryBuilder matchPhraseQueryBuilder = QueryBuilders.matchPhraseQuery("field1", "search phrase");
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.should(multiMatchQueryBuilder);
boolQueryBuilder.should(matchPhraseQueryBuilder);
SearchRequestBuilder searchRequestBuilder = client.prepareSearch("index_name")
.setQuery(boolQueryBuilder)
.setSize(10);
SearchResponse searchResponse = searchRequestBuilder.get();
```
在这个例子中,我们首先创建了一个 MultiMatchQueryBuilder 对象,并通过 addFields 方法来指定要匹配的字段。接着,我们创建了一个 MatchPhraseQueryBuilder 对象,并指定要匹配的字段和精确匹配的搜索词。
然后,我们创建了一个 BoolQueryBuilder 对象,并通过 should 方法来将 multiMatchQueryBuilder 和 matchPhraseQueryBuilder 对象添加到 boolQueryBuilder 中,表示其中一个条件满足即可。
最后,我们将 boolQueryBuilder 对象传入 SearchRequestBuilder 的 setQuery 方法中,完成查询操作。
希望这个例子可以帮助到您。