2015-06-12 70 views
0

我試圖讓過濾結果只返回具有標籤「新聞」Elasticsearch - 無法獲取過濾器QUERY_STRING

-> POST https://host.com/harvester-dev/entries/_search? 
    _source=description%2Cimage%2Ctitle%2CupdateTime%2Ctags%2Curl 
    { 
    "filtered": { 
     "query": { 
     "query_string": { 
      "query": "suksess-duo", 
      "default_operator": "AND" 
     } 
     }, 
     "filter": { 
     "bool": { 
      "must": { 
      "term": { 
       "tags": "news" 
      } 
      } 
     } 
     } 
    }, 
    "aggs": { 
     "harvester-test": { 
     "global": {} 
     } 
    } 
    } 
    <- 400 
    { 
    "error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[yXZEi0emQkuToiYBcj1wUA][harvester-dev][0]: SearchParseException[[harvester-dev][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\"filtered\":{\"query\":{\"query_string\":{\"query\":\"suksess-duo\",\"default_operator\":\"AND\"}},\"filter\":{\"bool\":{\"must\":{\"term\":{\"tags\":\"news\"}}}}},\"aggs\":{\"harvester-test\":{\"global\":{}}}}]]]; nested: SearchParseException[[harvester-dev][0]: from[-1],size[-1]: Parse Failure [No parser for element [filtered]]]; }{[6gUDVyvDTSGUeYnoIN8N8Q][harvester-dev][1]: RemoteTransportException[[elastic_search148_aws_eu_west_1_data_0_dblayer_com][inet[/NN.NN.NN.NN:9300]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[harvester-dev][1]: from[-1],size[-1]: Parse Failure [Failed to parse source 

這是數據的樣子的項目工作:

{ 
    hits: { 
    total: 15921, 
    max_score: 1, 
    hits: [ 
    { 
     _index: "harvester-dev", 
     _type: "entries", 
     _id: "5574156f", 
     _score: 1, 
     _source: { 
     image: "image-url", 
     description: "fine description", 
     updateTime: "2015-06-07T09:57:03.654Z", 
     title: "our title", 
     url: "http://example.com", 
     tags: [ 
      "computers", 
      "news" 
     ] 
     } 
    },]}} 

我很想只抓取標籤爲「news」的文檔。例如,將「計算機」與標籤「新聞」匹配的文件。我應該如何製作我的查詢?

+0

有標籤「新聞」和**沒有其他標籤**或只是有「新聞」(也許別人,無所謂)的文件? –

回答

0

我的壞。 filtered消息必須嵌套在query內。

{ 
    "query": { 
     "filtered": { 
     "query": { 
      "query_string": { 
      "query": "computers", 
      "default_operator": "AND" 
      } 
     }, 
     "filter": { 
      "bool": { 
      "must": { 
       "term": { 
       "tags": "news" 
       } 
      } 
      } 
     } 
     } 
    },