问题

比如要查找属于两种类型的物品,这个时候,term查询就不行了,需要采用terms查询。

golang中的用法

看了一下,olivere/elastic 包提供了一个 terms查询,于是高兴的直接使用了。

query := elastic.NewBoolQuery()
query = query.Filter(elastic.NewTermsQuery("status", []int{1,2}))

没想到没有效果,于是又看源码,才发现

func NewTermsQuery(name string, values ...interface{}) *TermsQuery {
q := &TermsQuery{
name: name,
values: make([]interface{}, 0),
}
if len(values) > 0 {
q.values = append(q.values, values...)
}
return q
}

这里value是直接添加进去的,没有循环添加。

那么怎么用呢

这里直接传多参数就可以了,即query = query.Filter(elastic.NewTermsQuery("status",1,2))

改进,直接传切片

然而有时候需要传切片,这样怎么做呢?

func ToInterfaceSlice(slice interface{}) []interface{} {
s := reflect.ValueOf(slice)
if s.Kind() != reflect.Slice {
panic("InterfaceSlice() given a non-slice type")
} ret := make([]interface{}, s.Len()) for i:=0; i<s.Len(); i++ {
ret[i] = s.Index(i).Interface()
} return ret
} status := ToInterfaceSlice([]int{1,2})
query = query.Filter(elastic.NewTermsQuery("status",status... )

golang_elasticsearch 多精确值匹配的更多相关文章

  1. MySQL(1) - 基础

    参考资料: http://www.jianshu.com/p/91e3af27743f 一.MySQL介绍以及安装 1.1 MySQL介绍 MariaDB数据库管理系统是MySQL的一个分支,主要由开 ...

  2. Elasticsearch入门教程之安装与基本使用

    ubuntu16.04+elasticsearch6.5为例,参考官网文档https://www.elastic.co/guide/en/elasticsearch/reference/current ...

  3. ES 常用的查询语句介绍

    elasticsearch定义了两种查询方式: 一.索引(index).type.document 相关语句 1.列出所有索引的状态 GET /_cat/indices?v health status ...

  4. elasticsearch(5) 请求体搜索

    上一篇提到的轻量搜索非常简单便捷,但是通过请求体查询可以更充分的利用查询的强大功能.因为_search api中大部分参数是通过HTTP请求体而非查询字符串来传递的. 一 空查询 对于空查询来说,最简 ...

  5. Elasticsearch入门篇

    推荐博客: 阮一峰大神:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html ElasticSearch 权威指南(中文版):https: ...

  6. 【ES】学习3-请求体查询

    1.空查询 GET /index_2014*/type1,type2/_search {} GET /_search { , } 2.查询表达式 DSL只需将查询语句传递给 query 参数 GET ...

  7. Elasticsearch基本用法(1)--原生操作

    2.2.创建索引 2.2.1.语法 创建索引的请求格式: 请求方式:PUT 请求路径:/索引库名 请求参数:json格式: { "settings": { "number ...

  8. Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries

    目录 上篇回顾 Building Queries 匹配所有的查询 全文查询 Full Text Queries 什么是全文查询? Match 全文查询 API 列表 基于词项的查询 Term Term ...

  9. Elasticsearch工作原理

    一.关于搜索引擎 各位知道,搜索程序一般由索引链及搜索组件组成. 索引链功能的实现需要按照几个独立的步骤依次完成:检索原始内容.根据原始内容来创建对应的文档.对创建的文档进行索引. 搜索组件用于接收用 ...

随机推荐

  1. nc高级应用

    参数介绍: nc.exe -h即可看到各参数的使用方法. 基本格式:nc?[-options]?hostname?port[s]?[ports]?... nc?-l?-p?port?[options] ...

  2. 局域网下ARP欺骗、嗅探,以及DNS欺骗

    准备:kali.xp kali ip:192.168.14.157 目标ip:192.168.14.158 目标网关:192.168.14.2 ARP欺骗:arpspoof -t 目标ip -r 目标 ...

  3. kali 解决Metasploit拿到shell后显示中文乱码问题

    拿到对方shell后显示的问题如下: 中文乱码解决: chcp 65001 然后 上传下载文件

  4. zip&ftp命令

    zip: C:\Users\IBM_ADMIN>zip -09r Oracle.zip ./Oracle/* C:\Users\IBM_ADMIN>ftp ftp> open adm ...

  5. collections集合模块 [namedtuple,deque,*]

    collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple namedtuple是一个函数, 它用来创建一个自定义的tuple对象,并且规定了 tuple元 ...

  6. u3d 创建元件 预制件 U3d creates component prefabricated parts

    u3d 创建元件 预制件 U3d creates component prefabricated parts 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@ ...

  7. android studio 代码模板

    作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com android studio 代码模板 an ...

  8. 最全的JS判断是否为中文的方法

    第一种代码:EXFCODE:1     function isChinese(temp)2     {3       var re=/[^/u4e00-/u9fa5]/;4       if (re. ...

  9. JavaScript:变量提升和函数提升

    第一篇文章中提到了变量的提升,所以今天就来介绍一下变量提升和函数提升.这个知识点可谓是老生常谈了,不过其中有些细节方面博主很想借此机会,好好总结一下. 今天主要介绍以下几点: 1. 变量提升 2. 函 ...

  10. 未能加载文件或程序集“Benlai.SOA.Framework.Common, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。

    未能加载文件或程序集“Benlai.SOA.Framework.Common, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个 ...