2017-05-22 91 views
-1

對於下列對象:elasticsearch掃描所有對象字段

{ 
    name: 'value1', 
    name$en_US: 'value2', 
    name$fr_CA: 'value3', 
    ... 
    ... 
} 

我的查詢:

NAME: { 
    type: "string", 
    index: "not_analyzed", 
    doc_values: true, 
    fielddata: { 
     format: "doc_values" 
    }, 
    fields: { 
    ft: { 
      type: "string", 
      analyzer: "standard", 
      ignore_above: 10922 
     } 
    }, 
    ignore_above: 10922 
}, 
NAME$en_CN: { 
    type: "string", 
    index: "no", 
    ignore_above: 10922 
}, 
NAME$en_US: { 
    type: "string", 
    index: "no", 
    ignore_above: 10922 
}, 
NAME$es_US: { 
    type: "string", 
    index: "no", 
    ignore_above: 10922 
}, 
`

"query": { 
    "filtered": { 
    "filter": { 
     "and": [ 
     { 
      "term": { 
      "type": "product" 
      } 
     }, 
     { 
      "or": [ 
      { 
       "regexp": { 
       "name": ".*sometext.*" 
       } 
      }, 
      { 
       "regexp": { 
       "name$en_US": ".*sometext.*" 
       } 
      } 
      ] 
     } 
     ] 
    } 
    }, 
} 

` 我對不同的可能區域設置映射

我有一個問題,ElasticSearch可以很好地與名稱配合使用,但在名稱和語言環境中失敗。我該如何解決它?

添加了查詢和映射。

+0

你是什麼意思「不起作用」?請提供更多信息,因爲它不清楚。 –

+0

@AndreiStefan我的意思是response.hits.hits是空數組 –

+0

什麼是查詢? –

回答

0

問題是您的name$en_US和其他語言特定的字段有index: "no",這使得它無法搜索。

如果該字段的內容未被索引,則無法在其上進行搜索。摘自the documentation

index選項控制是否對字段值進行索引。它接受truefalse未編入索引的字段不可查詢