我在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