Elasticsearch:匹配嵌套对象的数组

时间:2017-09-09 22:03:18

标签: elasticsearch spring-data-elasticsearch jest elasticsearch-5

该示例摘自Elasticsearch参考:https://www.elastic.co/guide/en/elasticsearch/reference/5.3/nested.html

我的索引与此类似。唯一的区别是user.first和user.last是 keyword 类型,所以我可以在它们上使用过滤器

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "user": {
          "type": "nested" 
        }
      }
    }
  }
}

PUT my_index/my_type/1
{
  "group" : "fans",
  "user" : [
    {
      "first" : "John",
      "last" :  "Smith"
    },
    {
      "first" : "Alice",
      "last" :  "White"
    }
  ]
}

在两种情况下,我应该使用什么查询来获取与上述数组匹配的文档(正好两项,一项是John Smith,一项是Alice White):

  1. 订单无关紧要
  2. 订单事宜

1 个答案:

答案 0 :(得分:0)

搜索后,实现订单无关紧要的最佳方法是:索引计数字段。

请参阅:Elasticsearch Equal Exactly

原因是:

  

在Elasticsearch中,没有专用的数组类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值必须具有相同的数据类型。