2016-04-07 27 views
0

========嘗試在列表上查詢,但未能正常工作=============
輸入記錄:在ElasticSearch上查詢列表時沒有獲得預期的輸出

{ 
    "somerecord": [ 
    { 
     "fieldValue": "1", 
     "sampleKey": [ 
     "1", 
     "2" 
     ] 
    }, 
    { 
     "fieldValue": "2", 
     "sampleKey": [ 
     "3", 
     "4" 
     ] 
    } 
    ] 
} 

輸出預期或需要「fieldValue方法」:」 1」 搜索:

{ 
    "fieldValue": "1", 
    "sampleKey": [ 
    "1", 
    "2" 
    ] 
} 

個步驟:
創建一個映射
使用不同的查詢類型

參考把記錄
查詢:

http://www.spacevatican.org/2012/6/3/fun-with-elasticsearch-s-children-and-nested-documents/ https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-mapping.html https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html https://gist.github.com/nicolashery/6317643 http://elasticsearch-cheatsheet.jolicode.com/ http://obtao.com/blog/2014/04/elasticsearch-advanced-search-and-nested-objects/ http://joelabrahamsson.com/elasticsearch-nested-mapping-and-filter/

請讓我知道如何實現我的意圖。

========一些命令運行的=========
1.

curl -XPOST https://someClusterURL/tax2 -d '{ 
    "mappings": { 
    "ids": { 
     "properties": { 
     "somerecord": { 
      "type": "nested", 
      "properties": { 
      "fieldValue": { 
       "type": "string" 
      } 
      } 
     } 
     } 
    } 
    } 
}' 
  • curl -XPUT https://someClusterURL/tax2/ids/1 -d '{ 
        "somerecord": [ 
        { 
         "fieldValue": "1", 
         "sampleKey": [ 
         "1", 
         "2" 
         ] 
        }, 
        { 
         "fieldValue": "2", 
         "sampleKey": [ 
         "3", 
         "4" 
         ] 
        } 
        ] 
    }' 
    
  • 3.
    curl -XGET https://someClusterURL/tax2/ids/_search -d '{ 
        "query": { 
        "nested": { 
         "path": "somerecord", 
         "query": { 
         "bool": { 
          "must": [ 
          { "match": { "fieldValue": "1" }} 
          ] 
         } 
         } 
        } 
        } 
    }' 
    

    結果:

    { 
        "somerecord": [ 
        { 
         "fieldValue": "1", 
         "sampleKey": [ 
         "1", 
         "2" 
         ] 
        }, 
        { 
         "fieldValue": "2", 
         "sampleKey": [ 
         "3", 
         "4" 
         ] 
        } 
        ] 
    } 
    

    嘗試了,但仍然沒有工作。

    回答

    2

    使用Inner_HitsSource Filtering(禁用源),如:

    { 
    "_source": false, 
    "query": { 
    "nested": { 
        "path": "somerecord", 
        "query": { 
        "bool": { 
         "must": [ 
         { "match": { "fieldValue": "1" }} 
         ] 
        } 
        }, 
        "inner_hits" :{} 
        } 
    } 
    

    使用"_source": false不會獲取源的詳細信息。

    +0

    謝謝Richa。我嘗試過,得到了我在inner_hits中尋找的子元素。但是我的問題還沒有在這裏結束,我不想完整記錄。我檢查了inner_hits和其他選項,看不到設置爲禁用完整的記錄作出迴應。讓我知道它是否可能。 –

    +0

    @VenkataraoN它是否適合你。 – Richa

    +0

    謝謝Richa!它現在爲我工作。 –

    0

    問題是您將兩個對象都存儲在一個嵌套文檔中。當您在一個嵌套對象內發生命中時,將返回完成文檔。

    您是否需要嵌套文檔?

    +0

    輸入記錄是東西包含一個列表並將存儲在ElasticSearch中。應該給出匹配的內部對象之後。 –

    +0

    然後查看[inner hits aggregation](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits.html)。這會給你造成命中的內在物體。 –

    +0

    謝謝邁克爾。我嘗試過,得到了我在inner_hits中尋找的子元素。但正如下面關於Richa的回答所評論的,我的問題並沒有在這裏結束,我不想完整記錄。我檢查了inner_hits和其他選項,看不到設置爲禁用完整的記錄作出迴應。讓我知道它是否可能。 –

    相關問題