【问题标题】:Nested Search in ElasticSearch not working?ElasticSearch 中的嵌套搜索不起作用?
【发布时间】:2016-07-13 17:02:43
【问题描述】:

我想获取所有国家名称为 "India" 的州。 为什么我无法使用弹性搜索搜索嵌套数据?

异常:嵌套:QueryParsingException[[userinfo] [nested] 路径 [country] 下的嵌套对象不是嵌套类型]; }]


我正在执行的查询:

userinfo 是索引名称,state 是类型

        POST /userinfo/state/_search?v
        {
            "query": {
                "nested": {

                   "path": "country",
                   "query": {
                       "match": {
                          "country.name": "India"
                       }
                   }
                }
            }
        }

        ------------------------------
        My Json is for state type : 

        {
                    "_index": "userinfo",
                    "_type": "state",
                    "_id": "35",
                    "_score": 1,
                    "_source": {
                       "id": "35",
                       "name": "County Down",
                       "abbreviation": "DWN",
                       "isDeleted": 0,
                       "country": {
                          "id": "3",
                          "name": "United Kingdom",
                          "abbreviation": "UK",
                          "isDeleted": 0
                       }
                    }
                 }

        -------------------------------------

 </br></br>
        State.java

        package com.elastic.entity;

        import org.springframework.data.annotation.Id;
        import org.springframework.data.elasticsearch.annotations.Document;
        import org.springframework.data.elasticsearch.annotations.Field;
        import org.springframework.data.elasticsearch.annotations.FieldType;

        @Document(indexName = "userinfo", type = "state")
        public class State {


            @Id
            private String id;

            private String name;
            private String abbreviation;
            private int isDeleted;

            @Field(type = FieldType.Nested)
            private Country country;



            public State()
            {
                super();
            }

            public State(String id, String name, String abbreviation, int isDeleted, Country country) {
                super();
                this.id = id;
                this.name = name;
                this.abbreviation = abbreviation;
                this.isDeleted = isDeleted;
                this.country = country;
            }


            public String getId() {
                return id;
            }
            public void setId(String id) {
                this.id = id;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public String getAbbreviation() {
                return abbreviation;
            }
            public void setAbbreviation(String abbreviation) {
                this.abbreviation = abbreviation;
            }
            public int getIsDeleted() {
                return isDeleted;
            }
            public void setIsDeleted(int isDeleted) {
                this.isDeleted = isDeleted;
            }
            public Country getCountry() {
                return country;
            }
            public void setCountry(Country country) {
                this.country = country;
            }




        }

【问题讨论】:

    标签: java elasticsearch


    【解决方案1】:
    Try This with match : 
    
    POST /index/type/_search?v
    {
        "query": {
            "match": {
               "state.country.name": "India"
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      这将为您提供所有具有印度国家/地区的文件

      {
        "query": {
          "query_string": {
            "default_field": "country.name"
            , "query": "India"
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-12-09
        • 1970-01-01
        • 1970-01-01
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-20
        相关资源
        最近更新 更多