如何在URI搜索中搜索多个字段

时间:2016-11-21 20:59:14

标签: elasticsearch

我想使用URI搜索(q =)在ElasticSearch中执行AND操作。我该怎么做?

如果我有以下文件: [{“name”:“Test 1”,“pub”:“2”},{“name”:“Test 2”,“pub”:“1”},{“name”:“A”,“pub” “:” 1" }]

我想查询包含名称包含“Test”的文档,其中pub等于“1”。我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:0)

实际上你需要嵌套字段。以下是一个很好的资源。

https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-objects.html

答案 1 :(得分:0)

假设您的文档如下所示:

{
    "my_field": [
        { "name":"Test 1", "pub":"2"}, 
        { "name":"Test 2", "pub":"1"}, 
        { "name":"A", "pub":"1"}
    ]
}

my_field的映射类型为nested,类似于:

{
  "mappings": {
    "doc_type": {
      "properties": {
        "my_field": {
          "type": "nested",
          "properties": {
            "name": { "type": "string" },
            "pub": {"type": "integer" }
          }
        }
      }
    }
  }
}

然后,您可以查询索引并使用以下nested查询获取预期文档:

POST /_search
{
  "query": {
    "nested": {
      "path": "my_field",
      "query": {
        "bool": {
          "filter": [
            {
              "match": {
                "name": "Test"
              }
            },
            {
              "match": {
                "pub": 1
              }
            }
          ]
        }
      }
    }
  }
}
相关问题