我一直在尝试搜索包含嵌套字段的文档.我创建了这样的嵌套映射:
{
"message": {
"properties": {
"messages": {
"type": "nested",
"properties": {
"message_id": { "type": "string" },
"message_text": { "type": "string" },
"message_nick": { "type": "string" }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的搜索看起来像这样:
curl -XGET 'localhost:9200/thread_and_messages/thread/_search' \
-d '{"query": {"bool": {"must": [{"match": {"thread_name": "Banana"}}, {"nested": {"path": "messages", "query": {"bool": {"must": [{"match": {"messages.message_text": "Banana"}}]}}}]}}}}'
Run Code Online (Sandbox Code Playgroud)
然而,我收到此错误消息:
QueryParsingException[[thread_and_messages] [nested] nested object under path [messages] is not of nested type]
Run Code Online (Sandbox Code Playgroud)
编辑
我仍然收到此错误.我通过Java这样做,所以这是我想要创建的文档:
{
"_id": {
"path": "3",
"thread_id": "3",
"thread_name": "Banana",
"created": "Wed Mar …Run Code Online (Sandbox Code Playgroud) 我最近从elasticsearch 1.7切换到2.0,我注意到你设置客户端的方式已经改变了.我浏览了文档,由于某种原因客户端始终为null.我想知道我是否正确设置了它.
这是我的代码:
Client client = null;
try {
client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
} catch (Exception e) {
Logger.log(e);
} finally {
client.close();
try {
conn.close();
} catch (SQLException e) {
Logger.log(e);
}
}
Run Code Online (Sandbox Code Playgroud) 我在Elasticsearch中遇到嵌套类型映射的很多问题,我已经运行它来创建我的索引:
curl -XPOST 'http://localhost:9200/thread_and_messages' -d
'{"mappings" : {
"message": {
"properties": {
"messages": {
"type": "nested",
"include_in_parent": true,
"properties": {
"message_id": {"type": "string"},
"message_text": {"type": "string"},
"message_nick": {"type": "string"}
}
}
}
}
}}'
Run Code Online (Sandbox Code Playgroud)
那么这就是我为文档编制索引的方式:
curl -XPUT 'http://localhost:9200/thread_and_messages/thread/1' -d
'{
"thread_id":"2",
"thread_name":"Windows",
"created":"Wed Mar 25 2015",
"first_nick":"Admin",
"messages":[
{"message_id":"5", "message_text":" Pc with a mouse", "message_nick":"Admin"},
{"message_id":"6", "message_text":"Keyboard", "message_nick":"Admin"},
{"message_id":"7", "message_text":"iPhone", "message_nick":"Admin"},
{"message_id":"8", "message_text":"Gym", "message_nick":"Admin"}]"
}'
Run Code Online (Sandbox Code Playgroud)
这是我的查询:
curl -XGET 'http://localhost:9200/thread_and_messages/thread/_search' -d
'{"query": {
"bool": {
"must": [
{"match": {"thread_name": "windows"}},
{"nested": …Run Code Online (Sandbox Code Playgroud)