2017-03-31 117 views
1

我正在使用elasticsearch 5.2.2。elasticsearch中的數組中沒有匹配

在我的索引

我一直在尋找這樣的數據:

{ 
    "_index": "index", 
    "_type": "273caf76-ec03-478c-b980-9743180bc863", 
    "_id": "eee46e24-f383-4ae7-8930-dc3836e030a5", 
    "_score": 3.41408, 
    "_source": { 
     "Father Name": [ 
     { 
      "id": "some id", 
      "value": "Some value test test" 
     } 
     ], 
     "Mother Name": [ 
     { 
      "id": "some id", 
      "value": "Another value haha" 
     } 
     ], 
     "Other values": [{ id: "", value: ""}] 
    } 
} 

當我與_all搜索,一切工作正常,我可以用合理的分數

{"query":{"match":{"_all":"value"}},"from":0,"size":20} 

但是,發現所有的結果查詢正在所有字段中搜索。如果我想要例如在Father NameFather NameMother Name中查找結果,那麼我什麼也找不到。

{"query":{"match":{"Father Name":"value"}},"from":0,"size":20} 

我的目標是找到像_all一樣的搜索,但僅限於幾個字段。

回答

2

您的字段Father NameMother Name內部對象數組

Father Namevalue領域內進行搜索,例如,做

curl -XGET localhost:9200/myindex/_search?pretty -d ' 
{ 
    "query": { 
    "match": { 
     "Father Name.value": "first" 
    } 
    }, 
    "from": 0, 
    "size": 20 
}' 

我不知道,但是,如何查詢內Father Name各個領域。

參考Arrays of Inner Objects

0

山姆沉的回答是去,如果你需要配置在每次查詢時使用的屬性的方式。

一種替代方法是將字段配置爲不包含在_all查詢中。

例如,這將導致只有Father Name被包含在_all查詢中,方法是禁用類型級別的所有字段,然後啓用Father Name上的所有子字段。

PUT index 
{ 
    "mappings": { 
    "type": { 
     "include_in_all": false, 
     "properties": { 
     "Father Name" : { 
      "include_in_all": true 
     } 
     } 
    } 
} 

您可以在映射的任何級別(包括子字段屬性)上設置include_in_all屬性。

這裏的一大缺陷是,這不是在逐個查詢的基礎上配置的,而是針對試圖使用_all字段的所有查詢配置的。

相關問題