我想获取国家名称为“India”的所有州。 为什么我无法使用弹性搜索搜索嵌套数据?
异常:嵌套:路径[country]下的QueryParsingException [[userinfo] [nested]嵌套对象不是嵌套类型]; }]
查询我正在执行:
userinfo是索引名称,状态是类型
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;
}
}
答案 0 :(得分:1)
Try This with match :
POST /index/type/_search?v
{
"query": {
"match": {
"state.country.name": "India"
}
}
}
答案 1 :(得分:0)
这将为您提供所有具有国家/地区的文件
{
"query": {
"query_string": {
"default_field": "country.name"
, "query": "India"
}
}
}