es的条件查询每次默认返回10条数据
boolQuery := elastic.NewBoolQuery()
//boolQuery.Must(elastic.NewMatchQuery("user", "test1"))
searchResult, err := esClient.Search().
Index(index).
Query(boolQuery).
Size(20).
From(0).
Pretty(true).
Do(context.Background())
Size(20).
From(0).加上两个属性就可以变成20了
或者直接用kibana在该索引上执行
curl -XPUT http://localhost:9200/test_index/_settings -d '{ "index" : { "max_result_window" : 10000}}'
1、must 必须有的条件,每次查询一个数据
boolQuery := elastic.NewBoolQuery()
boolQuery.Must(elastic.NewMatchQuery("user", "张三"))
searchResult, err := esClient.Search().
Index(index).
Query(boolQuery).
Size(10000).
From(0).
Pretty(true).
Do(context.Background())
此时查询的就是user为张三的数据,size为10000,默认不能大于10000,这个数值可以改,自行百度
2、should 可以有的条件,查询多个数据
boolQuery := elastic.NewBoolQuery()
boolQuery.Should(elastic.NewMatchQuery("user", "张三"))
boolQuery.Should(elastic.NewMatchQuery("user", "李四"))
boolQuery.Should(elastic.NewMatchQuery("user", "王五"))
searchResult, err := esClient.Search().
Index(index).
Query(boolQuery).
Size(10000).
From(0).
Pretty(true).
Do(context.Background())
此时查询的就是user为张三、李四、王五的数据
结果的遍历:
var user User
for _, item := range esResult.Each(reflect.TypeOf(user)) {
if u, ok := item.(User); ok {
//dosomething...
}
}