2016-09-13 5 views
0

Я пытаюсь запросить мои ES, вот мои данные, вы можете просто запустить это в смысле, он создает индекс fst и заполняет его 4-мя элементами. , то вы можете видеть, что он возвращает неправильный номер результата Я хочу только один результат, как и должно быть.эластичный поисковый запрос возвращает все данные

PUT fst/objects/ggg 
{ 
    "frameAttributes": { 
    "identities": [ 
    { "_id": "DSC00263", "_score": 0.655822}, 
    { "_id": "DSC00262", "_score": 0.59957 }, 
    { "_id": "DSC00244", "_score": 0.220819}, 
    { "_id": "DSC00300", "_score": 0.191191}, 
    {"_id": "DSC00276", "_score": 0.124561} 

    ] 
    } 
} 
PUT fst/objects/ffffff 
{ 
    "frameAttributes": { 
    "identities": [ 
     {"_id": "DSC00222","_score": 0.191009}, 
     {"_id": "DSC00261","_score": 0.146157}, 
     {"_id": "DSC00329","_score": 0.14518}, 
     {"_id": "DSC00225","_score": 0.12622}, 
     {"_id": "DSC00295","_score": 0.12396} 
     ] 
    } 

} 
PUT fst/objects/aaaa 
{ 
    "frameAttributes": { 
     "identities": [ 
     {"_id": "DSC00229","_score": 0.223149}, 
     {"_id": "DSC00240","_score": 0.178388}, 
     {"_id": "DSC00228","_score": 0.173769}, 
     {"_id": "DSC00257","_score": 0.166746}, 
     {"_id": "DSC00226","_score": 0.153071} 
     ] 
    } 
} 
put fst/objects/abcdef 
{ 
    "frameAttributes": { 
    "identities": [ 
     { "_id": "DSC00262","_score": 0.427957}, 
     {"_id": "DSC00263","_score": 0.408772}, 
     {"_id": "DSC00282","_score": 0.284546 }, 
     { "_id": "DSC00283","_score": 0.191374}, 
     {"_id": "DSC00299", "_score": 0.165478} 
     ] 
    } 
} 

мой запрос должен возвращать только один результат

get fst/_search 
{ 
    "query": { 
     "term": { 
      "frameAttributes.identities._id": { 
       "value": "DSC00229" 
      } 
     } 
    } 
} 

ответ

0

Потребовалось время , но я узнал что-то новое эластичное поиск не любит, чтобы создать поля, называемые _id. Я изменил его на personId, и теперь он просто работает.

Спасибо всем :)

2

Вы должны установить требуемое поле not_analyzed. В вашем случае это поле _id. Это можно сделать при создании индекса. Например:

PUT /gb/_mapping/tweet 
{ 
    "properties" : { 
    "tag" : { 
     "type" : "string", 
     "index": "not_analyzed" 
    } 
    } 
} 

Проверить эту ссылку для справки: https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_exact_values.html

Смежные вопросы