相当于mysql in操作
Set set = new HashSet<String>();
set.add("3503027400038206");
set.add("3503227700038105");
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.termsQuery("pt_number", set));
ES新建type
url: my.spider.test/myDocumentest/_mapping
method: put
body:
{
“properties”: {
“myVoiceId”: {
“type”: “long”
},
“myVoiceStatus”: {
“type”: “long”
},
“name”: {
“type”: “string”,
“index”: “not_analyzed”
},
“content”: {
“type”: “string”,
“index”: “ik”
},
“excelVoiceId”: {
“type”: “long”,
“index”: “not_analyzed”
}
}
}
注意:
1、指定字段为ik切词解析,那么可以利用fuzzyQuery,分词查询,es不会对查询条件做切词,需要查询前手工切词。
if(StringUtils.isNotBlank(queryDto.getSearchKeyword())){
final BoolQueryBuilder query = QueryBuilders.boolQuery();
List<String> keyWords = KeyWordExtractUtil.stringToArray(queryDto.getSearchKeyword());
for(String keyWord:keyWords){
query.should(QueryBuilders.fuzzyQuery("title", keyWord));
query.should(QueryBuilders.fuzzyQuery("content", keyWord));
}
esQueryUtil.getQueryBuilder().must(query);
}
2、type的命名不要带点符号,否则,es-head查询点时候,会作为可以查询
ES新增字段
my.spider.test/_mapping/myDocumentest
method: put
{
“properties”: {
“treePathId”: {
“index”: “not_analyzed”,
“type”: “string”
},
“trainer”: {
“index”: “not_analyzed”,
“type”: “string”
}
}
}
ES新增嵌套字段
{
“properties”: {
“labels06”: {
“type”: “nested”,
“properties”: {
“id”: {
“type”: “long”
},
“name”: {
“index”:“not_analyzed”,
“type”: “text”
}
}
}
}
}
基本用法
https://www.cnblogs.com/shoufeng/p/11103913.html
head嵌套查询
URL:my.spider.user/user_document/_search
方式:post
查询JSON:
{
“query”: {
“bool”: {
“must”: [
{
“nested”: {
“path”: “addressList”,
“query”: {
“match”: {
“addressList.cityId”: “366”
}
}
}
}
]
}
}
}
嵌套查询:
{
"query": {
"nested": {
"path": "channelDoc.channelManagers",
"query": {
"bool": {
"must": [
{
"match": {
"channelDoc.channelManagers.managerType": "3"
}
},
{
"match": {
"channelDoc.channelManagers.userId": 28
}
}
]
}
}
}
}
}
// 根据创建结束时间,获取查询条件
public static BoolQueryBuilder getQueryBuilderByCreatedEndAndMinCommonVoiceId(Long createdAtEnd) {
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.must(QueryBuilders.termQuery("name", "张三"));
queryBuilder.filter(QueryBuilders.rangeQuery("createdAt").lt(createdAtEnd));
return queryBuilder;
}
根据userId和publishTime时间范围同时查询
GET: myIdex/_search
{
"query": {
"bool": {
"must": {
"term": {
"userId": 431131
}
},
"filter": {
"range": {
"publishTime": {
"gt": 1656675419122,
"lt": 1660304219122
}
}
}
}
}
}
多条件es查询
{
"query": {
"bool": {
"must": [
{
"term": {
"userId": "218362492"
}
},
{
"term": {
"messageId": "19912413340049"
}
},
{
"term": {
"mid": "11521fbaf9f04251a343d1ff0468b294"
}
}
]
}
}
}