我正在使用Meteor(如Javascript,Node,NPM等),并希望为用户提供简单的文本输入,以便通过Elasticsearch进行搜索。我希望能够在文本上使用修饰符,如+和“”,并搜索特定的字段。我正在寻找可以将纯文本输入转换为Elasticsearch Query DSL的东西。
这些是一些示例查询:
此查询意味着关键字“tatooine”必须存在:
stormtrooper +tatooine
这意味着“死亡之星”应该是一个关键词:
stormtrooper "death star"
这将仅在类别字段中搜索关键字“bloopers”:
stormtrooper category=bloopers
是否有可以执行此操作的库?可以存在通用解决方案,还是这就是为什么我找不到任何现有的答案?
答案 0 :(得分:0)
simple_query_string
会支持您的查询语法,但category=bloopers
除外,category:bloopers
代替curl -XPOST localhost:9200/your_index/_search -d '{
"query": {
"simple_query_string": {
"query": "stormtrooper category:bloopers"
}
}
}'
curl -XPOST localhost:9200/your_index/_search -d '{
"query": {
"simple_query_string": {
"query": "stormtrooper +tatooine"
}
}
}'
,否则它应该有效:
curl -XPOST localhost:9200/your_index/_search?q=stormtrooper%20%22death%20star%22"
您也可以直接在query string中发送查询:
for ($i = 0; $i < count($_POST['ItemID']); $i++)
{
$insertSQL = sprintf("INSERT INTO services (ItemID, JCard, CusID, Jcardid, ItemNo, PernNo, jcDescription) VALUES (%s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['ItemID'][$i], "int"),
GetSQLValueString($_POST['JCard'][$i], "int"),
GetSQLValueString($_POST['CusID'][$i], "text"),
GetSQLValueString($_POST['Jcardid'][$i], "text"),
GetSQLValueString($_POST['ItemNo'][$i], "int"),
GetSQLValueString($_POST['PernNo'][$i], "text"),
GetSQLValueString($_POST['JcDescription'][$i], "text");
}