【发布时间】:2014-06-22 11:20:54
【问题描述】:
我正在尝试在弹性搜索中构建一个查询,以在多个字段的文本中进行搜索,例如:
标题和描述是字段,我想在这三个字段中搜索“奥巴马”、“世界”、“新闻”。我尝试在 Elastic 网站上搜索并找到信息:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#_literal_fields_literal_and_per_field_boosting
但问题是当我尝试这种结构时会产生错误:
第一:
{
"multi_match" : {
"query": "obama world news",
"type": "cross_fields",
"fields": [ "Title", "Description" ],
"operator": "and"
}
}
它会产生这样的错误:
{
"error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][0]: SearchParseException[[republishan2][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [ {\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n }]]]; nested: SearchParseException[[republishan2][0]: from[-1],size[-1]: Parse Failure [No parser for element [multi_match]]]; }{[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][3]: SearchParseException[[republishan2][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [ {\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n }]]]; nested: SearchParseException[[republishan2][3]: from[-1],size[-1]: Parse Failure [No parser for element [multi_match]]]; }{[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][4]: SearchParseException[[republishan2][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [ {\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n }]]]; nested: SearchParseException[[republishan2][4]: from[-1],size[-1]: Parse Failure [No parser for element [multi_match]]]; }{[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][1]: SearchParseException[[republishan2][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [ {\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n }]]]; nested: SearchParseException[[republishan2][1]: from[-1],size[-1]: Parse Failure [No parser for element [multi_match]]]; }{[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][2]: SearchParseException[[republishan2][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [ {\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n }]]]; nested: SearchParseException[[republishan2][2]: from[-1],size[-1]: Parse Failure [No parser for element [multi_match]]]; }]",
"status": 400
}
我也试过这个查询:
{
"sort": {
"re_max": {
"order": "desc"
}
},
"query": {
"multi_match" : {
"query": "obama world news",
"type": "cross_fields",
"fields": [ "Title", "Description" ],
"operator": "and"
}
},
"from": 0,
"size": 30}
}
结果如下:
{
"error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][0]: SearchParseException[[republishan2][0]: from[-1],size[-1],sort[<custom:\"re_max\": org.elasticsearch.index.fielddata.fieldcomparator.LongValuesComparatorSource@1ef6a497>!]: Parse Failure [Failed to parse source [{\n\t\"sort\": {\n\t\t\"re_max\": {\n\t\t\t\"order\": \"desc\"\n\t\t\t}\n\t\t\t}, \n\t{\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n\t},\n\t\"from\": 0, \n\t\"size\": 30}\n}]]]; nested: JsonParseException[Unexpected character ('{' (code 123)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name\n at [Source: [B@52afc562; line: 7, column: 3]]; }{[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][3]: SearchParseException[[republishan2][3]: from[-1],size[-1],sort[<custom:\"re_max\": org.elasticsearch.index.fielddata.fieldcomparator.LongValuesComparatorSource@364d93ed>!]: Parse Failure [Failed to parse source [{\n\t\"sort\": {\n\t\t\"re_max\": {\n\t\t\t\"order\": \"desc\"\n\t\t\t}\n\t\t\t}, \n\t{\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n\t},\n\t\"from\": 0, \n\t\"size\": 30}\n}]]]; nested: JsonParseException[Unexpected character ('{' (code 123)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name\n at [Source: [B@52afc562; line: 7, column: 3]]; }{[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][4]: SearchParseException[[republishan2][4]: from[-1],size[-1],sort[<custom:\"re_max\": org.elasticsearch.index.fielddata.fieldcomparator.LongValuesComparatorSource@6e98bb14>!]: Parse Failure [Failed to parse source [{\n\t\"sort\": {\n\t\t\"re_max\": {\n\t\t\t\"order\": \"desc\"\n\t\t\t}\n\t\t\t}, \n\t{\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n\t},\n\t\"from\": 0, \n\t\"size\": 30}\n}]]]; nested: JsonParseException[Unexpected character ('{' (code 123)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name\n at [Source: [B@52afc562; line: 7, column: 3]]; }{[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][1]: SearchParseException[[republishan2][1]: from[-1],size[-1],sort[<custom:\"re_max\": org.elasticsearch.index.fielddata.fieldcomparator.LongValuesComparatorSource@6c0543f7>!]: Parse Failure [Failed to parse source [{\n\t\"sort\": {\n\t\t\"re_max\": {\n\t\t\t\"order\": \"desc\"\n\t\t\t}\n\t\t\t}, \n\t{\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n\t},\n\t\"from\": 0, \n\t\"size\": 30}\n}]]]; nested: JsonParseException[Unexpected character ('{' (code 123)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name\n at [Source: [B@52afc562; line: 7, column: 3]]; }{[0CTkBM0pQGK1MzYEDlrpcQ][republishan2][2]: SearchParseException[[republishan2][2]: from[-1],size[-1],sort[<custom:\"re_max\": org.elasticsearch.index.fielddata.fieldcomparator.LongValuesComparatorSource@215084be>!]: Parse Failure [Failed to parse source [{\n\t\"sort\": {\n\t\t\"re_max\": {\n\t\t\t\"order\": \"desc\"\n\t\t\t}\n\t\t\t}, \n\t{\n \"multi_match\" : {\n \"query\": \"obama world news\",\n \"type\": \"cross_fields\",\n \"fields\": [ \"Title\", \"Description\" ],\n \"operator\": \"and\"\n }\n\t},\n\t\"from\": 0, \n\t\"size\": 30}\n}]]]; nested: JsonParseException[Unexpected character ('{' (code 123)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name\n at [Source: [B@52afc562; line: 7, column: 3]]; }]",
"status": 400
}
我正在使用 Postman Rest 客户端运行查询。我的代码有什么问题?
【问题讨论】:
标签: json elasticsearch