我試圖通過一個簡單的示例應用程序來學習elasticsearch,該應用程序列出了與人相關的報價。這個例子映射可能看起來像:彈性搜索陣列元素的查詢字符串搜索
{
"people" : {
"properties" : {
"name" : { "type" : "string"},
"quotations" : { "type" : "string" }
}
}
}
一些示例數據可能看起來像:
{ "name" : "Mr A",
"quotations" : [ "quotation one, this and that and these"
, "quotation two, those and that"]
}
{ "name" : "Mr B",
"quotations" : [ "quotation three, this and that"
, "quotation four, those and these"]
}
我想能夠使用個人報價查詢字符串API,並返回匹配誰的人。例如,我可能想要找到包含(這個和這些)引用的人 - 應該返回「A先生」而不是「B先生」,等等。我怎樣才能做到這一點?
EDIT1:
安德烈的回答下面似乎工作,數據值現在看起來像:
{"name":"Mr A","quotations":[{"value" : "quotation one, this and that and these"}, {"value" : "quotation two, those and that"}]}
不過,我似乎無法獲得QUERY_STRING的查詢工作。以下產生沒有結果:
{
"query": {
"nested": {
"path": "quotations",
"query": {
"query_string": {
"default_field": "quotations",
"query": "quotations.value:this AND these"
}
}
}
}
}
有沒有辦法讓一個query_string查詢處理嵌套對象?
編輯2:是的,請參閱安德烈的答案。
我必須將值更改爲:'{「name」:「Mr A」,「quotations」:[{「value」:「引用one,this and that和這些」},{「value」: 「引用二,那些和那個」}]}',但這工作。有沒有辦法使用QueryStringQuery與此?我嘗試使用一個(只是用query_string替換bool),它似乎沒有工作。 – oneway 2014-10-09 13:26:29
你說得對。現在我注意到我拷貝了錯誤的值,即使我使用了正確的值(你提到的)。 – 2014-10-09 13:34:01
試試這個:'{ 「查詢」:{ 「嵌套」:{ 「路徑」: 「語錄」, 「查詢」:{ 「QUERY_STRING」:{ 「default_field」: 「quotations.value」 「查詢」: 「這一點,這些」 }} } } } ' – 2014-10-09 13:36:11