我一直在編寫一個方法,它會在elasticsearch中使用各種搜索參數。我與這個樣子的查詢工作:在精確匹配的彈性搜索中鏈接fquery過濾器是否可能?
body:
{query:
{filtered:
{filter:
{and:
[
{term: {some_term: "foo"}},
{term: {is_visible: true}},
{term: {"term_two": "something"}}]
}
}
}
}
使用這個語法,我想我能在一起,這些術語鏈和編程產生這些查詢。我正在使用簡單的字符串,如果有一個像「person_name」這樣的術語,我可以將查詢分成兩部分,並說「哪裏的person_name匹配'JOHN'」,以及哪裏的person_name匹配'SMITH'「獲得準確的結果。
但是,我剛問過這個問題時遇到了「fquery」: Escaping slash in elasticsearch
我不能使用這個「和」/「term」過濾器在其中搜索一個帶斜線的值,所以我知道我可以使用fquery搜索的全部價值,像這樣
"fquery": {
"query": {
"match": {
"by_line": "John Smith"
但我怎麼能像這樣搜索多個它EMS?似乎當我結合fquery和我的過濾/過濾/和/術語查詢時,我的「和」術語查詢被忽略。使用彈性搜索進行嵌套/鏈接查詢的最佳做法是什麼?
如在下面的評論,是我可以再補充fquery到「和」塊像這樣
{:filtered=>
{:filter=>
{:and=>[
{:term=>{:is_visible=>true}},
{:term=>{:is_private=>false}},
{:fquery=>
{:query=>{:match=>{:sub_location=>"New JErsey"}}}}]}}}
與「sub_location」 =「紐約」爲什麼還要elasticsearch返回結果?我只想在這裏返回「新球衣」。
您應該能夠將查詢過濾器作爲過濾器包含在「和」過濾器中,就像您使用術語過濾器一樣。 – hudsonb
你說得對。我已經用後續更新了我的問題 – jdkealy