使用经典asp中的Rest我可以在执行简单搜索时从索引中检索数据,例如:
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", "http://elastic:changeme@10.128.128.109:9200/myindex/_search?q='fred blogs',_source='path.real'", False
我现在想要从一个更复杂的查询中检索数据,如果我使用Kibana会看起来像这样:
GET newsindex/_search
{
"query": {
"function_score": {
"query": { "bool" : {"should": [
{ "term": { "headline": "brown" } },
{ "term": { "bodytext": "brown" } },
{ "term": { "headline": "fox" } },
{ "term": { "bodytext": "fox" } }
]}},
"functions": [
{
"filter": {"match" : { "headline": "brown fox" }},
"weight": 2
},
{
"filter": {"match" : { "bodytext": "brown fox" }},
"weight": 1
},
{
"filter": {"match" : { "bodytext": "fox" }},
"weight": 3
},
{
"filter": {"match" : { "bodytext": "brown" }},
"weight": 3
},
{
"filter": {"match" : { "headline": "brown" }},
"weight": 4
},
{
"filter": {"match" : { "headline": "fox" }},
"weight": 4
}
],
"score_mode": "sum"
}
},"sort": [
{
"_score": {
"order": "asc"
}
}
],
"_source":[ "headline", "bodytext" ]
}
如何使用Rest传递此查询?我将动态建立这样的查询以通过休息。但我需要让构造正确。
答案 0 :(得分:0)
通过使用curl命令,您可以执行以下操作:
curl -XGET "http://elastic:changeme@10.128.128.109:9200/myindex/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"function_score": {
"query": {
"bool": {
"should": [
{
"term": {
"headline": "brown"
}
},
{
"term": {
"bodytext": "brown"
}
},
{
"term": {
"headline": "fox"
}
},
{
"term": {
"bodytext": "fox"
}
}
]
}
},
"functions": [
{
"filter": {
"match": {
"headline": "brown fox"
}
},
"weight": 2
},
{
"filter": {
"match": {
"bodytext": "brown fox"
}
},
"weight": 1
},
{
"filter": {
"match": {
"bodytext": "fox"
}
},
"weight": 3
},
{
"filter": {
"match": {
"bodytext": "brown"
}
},
"weight": 3
},
{
"filter": {
"match": {
"headline": "brown"
}
},
"weight": 4
},
{
"filter": {
"match": {
"headline": "fox"
}
},
"weight": 4
}
],
"score_mode": "sum"
}
},
"sort": [
{
"_score": {
"order": "asc"
}
}
],
"_source": [
"headline",
"bodytext"
]
}'
您可以使用curl在数据中发送查询。我确信你的Rest客户端也可以实现同样的目的。只需检查如何使用您的Rest客户端发送数据。
这post可能有所帮助。将示例中的DataToSend
变量替换为您的查询,看看是否有效。