2015-12-10 208 views
1

以下查询和索引不返回预期结果。我不明白,鉴于映射约束,当我搜索“ICD9”时,它也会返回“I9”和“9”等结果。有任何想法吗?ElasticSearch查询不返回预期结果

Here is the index mapping: 
{ 
    "mappings": { 
    "mymap": { 
     "dynamic_templates": [ 
     { 
      "codingstandard": { 
       "match": "*.CodingStandard", 
       "mapping": { 
       "type": "string", 
       "index": "not_analyzed" 
       } 
      } 
     } 
     ] 
    } 
    } 
} 

Here is my query: 
{ 
    "fields": [ 
    "Diagnosis.CodingStandard" 
    ], 
    "query": { 
    "query_string": { 
     "query": "Diagnosis.CodingStandard:ICD9" 
    } 
    } 
} 

Here are some of my results: 
"hits": { 
    "total": 9778, 
    "max_score": 3.501487, 
    "hits": [ 
    { 
     "_index": "myindex", 
     "_type": "mymapping", 
     "_id": "264235", 
     "_score": 3.501487, 
     "fields": { 
      "Diagnosis.CodingStandard": [ 
       "I9" 
      ] 
     } 
    }, 
    { 
     "_index": "myindex", 
     "_type": "mymapping", 
     "_id": "264261", 
     "_score": 3.501487, 
     "fields": { 
      "Diagnosis.CodingStandard": [ 
       "9" 
      ] 
     } 
    }, 
etc...  
+0

您可以检查该字段的映射'GET your_index/_mapping /场/ Diagnosis.CodingStandard'? – ChintanShah25

+0

{ “myindex”:{ “映射”:{ “mymapping”:{ “Diagnosis.CodingStandard”:{ “FULL_NAME”: “Diagnosis.CodingStandard”, “映射”:{ “Diagnosis.CodingStandard “:{ “类型”: “串”, “指数”: “not_analyzed” } } } } } } } – user481779

+0

我做同样的事情,这是为我工作,我得到只有_ICD9_回来,你正在使用什么版本的ES? – ChintanShah25

回答

0

是的,因为您使用的是query_string,elasticsearch默认为query_string进行模糊搜索。

,如果你想要做精确的搜索,你可以做过滤,而不是QUERY_STRING

{ 
    "query":{ 
     "filtered":{ 
      "filter":{ 
      "term":{ 
       "Diagnosis.CodingStandard": "ICD9" 
      } 
      } 
     } 
    } 
} 
+1

同样的结果。 { “_index”: “myindex”, “_type”: “mymapping”, “_id”: “264200”, “_score”:1, “字段”:{ “Diagnosis.CodingStandard”:[ “I9” ] }} , – user481779

+0

试试这个{ “查询”:{ “过滤”:{ “过滤器”:{ “术语”:{ “Diagnosis.CodingStandard”: “ICD9” } } } } } – zt1983811

+0

对不起,没有匹配! – user481779