我在ElasticSearch基礎上創建網站搜索,對於ElasticSearch我很新,所以我很樂意提供任何幫助。Elastic Search中的搜索查詢
這是我ElasticSearch內容的結構:
hits:
0:
_index: "mysite"
_type: "products"
_id: "1"
_score: 1
_source:
name:
0: "This is name"
number: "N6"
status: "Y"
這是我的Perl腳本:
my $e = Search::Elasticsearch->new();
my $results = $e->search(
index => 'mysite',
type => 'products',
size => 3,
body => {
query => {
match => { name => $query }
}
}
);
我想問你如何製作腳本,它匹配只具有狀態「Y」的產品,它應該找到名稱的子串,例如,如果$query
包含「is」時,應該找到該產品,因爲該產品名稱中包含「is」名稱「This is name」,最後一個也應該搜索號碼,例如,如果$query
包含「N6」,則應該找到那個產品也是。
所以是這樣的:(名稱或號碼),狀態= 「Y」
非常感謝你。
更新
我把它改寫成Perl語法,但我有一個語法錯誤:/
query => {
query_string => {
query => {
(name => $word OR number => $word) AND status => "Y"
}
}
}
錯誤:
-evalfile error: syntax error at (eval 215) line 33, near "} OR "\nGlobal symbol "$e" requires explicit package name at (eval 215) line 40.
Perl或Elasticsearch中的語法錯誤?也請發佈錯誤。 –
它看起來是一個Perl錯誤,發佈。我認爲語法是正確的。 – tomsk