对于ElasticSearch 2.2,我有一个如下所示的映射:
PUT /index/test_type/_mapping
{
"test_type":{
"properties":{
"nested_one":{
"type":"nested",
"properties":{
"some_id":{
"type":"string"
}
}
},
"nested_two":{
"type":"nested",
"properties":{
"some_id":{
"type":"string"
}
}
}
}
}我必须创建一个搜索some_id,该搜索将在对象test_type中同时显示为nested_one和nested_two的属性(是的,我必须保留这个test_type包装器)。
因此,如果test_type.nested_one.some_id =1或test_type.nested_two.some_id =1返回elasticId (请注意,这里的some_id是相同的),则查询将类似于。
我找到了用于搜索嵌套数据类型和使用“或”的文档,但是没有任何文档可以通过“或”搜索对象内的多个嵌套对象中的相同属性。我的问题是,这个映射有可能吗?
发布于 2017-02-01 23:17:33
下面是映射
PUT index_name1
{
"settings": {
"analysis": {
"analyzer": {},
"filter": {}
}
},
"mappings": {
"test_type":{
"properties":{
"nested_one":{
"type":"nested",
"properties":{
"some_id":{
"type":"string"
}
}
},
"nested_two":{
"type":"nested",
"properties":{
"some_id":{
"type":"string"
}
}
}
}
}
}
}以下是我索引的文档
POST index_name1/test_type
{
"nested_one" : [{
"some_id" : 78
},
{
"some_id" : 80
},{
"some_id" : 100
}],
"nested_two" : [{
"some_id" : 79
},
{
"some_id" : 80
},{
"some_id" : 101
}]
}以下是查询
POST index_name1/_search
{
"query": {
"bool": {
"should": [{
"nested": {
"path": "nested_one",
"query": {
"term": {
"nested_one.some_id": {
"value": 101
}
}
}
}
}, {
"nested": {
"path": "nested_two",
"query": {
"term": {
"nested_two.some_id": {
"value": 101
}
}
}
}
}]
}
}
}回覆
{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 0.9808292,
"hits": [
{
"_index": "index_name1",
"_type": "test_type",
"_id": "AVn788XeNIJY0Ao5vbA8",
"_score": 0.9808292,
"_source": {
"nested_one": [
{
"some_id": 78
},
{
"some_id": 80
},
{
"some_id": 100
}
],
"nested_two": [
{
"some_id": 79
},
{
"some_id": 80
},
{
"some_id": 101
}
]
}
},
{
"_index": "index_name1",
"_type": "test_type",
"_id": "AVn8BMr_NIJY0Ao5vbA_",
"_score": 0.9808292,
"_source": {
"title": "harley harley harley",
"nested_one": [
{
"some_id": 78
},
{
"some_id": 80
},
{
"some_id": 100
}
],
"nested_two": [
{
"some_id": 79
},
{
"some_id": 80
},
{
"some_id": 101
}
]
}
},
{
"_index": "index_name1",
"_type": "test_type",
"_id": "AVn8BKlmNIJY0Ao5vbA-",
"_score": 0.9808292,
"_source": {
"title": "harley harley",
"nested_one": [
{
"some_id": 78
},
{
"some_id": 80
},
{
"some_id": 100
}
],
"nested_two": [
{
"some_id": 79
},
{
"some_id": 80
},
{
"some_id": 101
}
]
}
}
]
}
}希望这能帮上忙谢谢
https://stackoverflow.com/questions/41991068
复制相似问题