elasticsearch 来自JSON格式字符串的Elasticsearch查询?
我正在使用Elasticsearch,我需要从存储为JSON格式字符串的文档中查询值 是否有任何选项可以查询存储JSON格式字符串的Elasticsearch表单 请查看我的用例 我将我的应用程序数据保存在Cassandra中,并将这些数据复制到elastic search(我使用捆绑版本)。但是在Cassandra中,我有一个带有elasticsearch 来自JSON格式字符串的Elasticsearch查询?,elasticsearch,cassandra,elassandra,elasticsearch,Cassandra,Elassandra,我正在使用Elasticsearch,我需要从存储为JSON格式字符串的文档中查询值 是否有任何选项可以查询存储JSON格式字符串的Elasticsearch表单 请查看我的用例 我将我的应用程序数据保存在Cassandra中,并将这些数据复制到elastic search(我使用捆绑版本)。但是在Cassandra中,我有一个带有list的字段,它包含带有嵌套JSON对象的JSON数组 当我将Cassandra表映射到Elasticsearch时(根据elassandra doc的建议),它将
list
的字段,它包含带有嵌套JSON对象的JSON数组
当我将Cassandra表映射到Elasticsearch时(根据elassandra doc的建议),它将Cassandra字段名映射为Elasticsearch中的JSON键,并将整个JSON数组视为JSON格式的字符串
现在我需要根据JSON中的键进行查询,该键在Elasticsearch中存储为JSON字符串
请参阅Elasticsearch中存储的我的数据示例:
{
"status": {
\"visibilityStatus\": true,
\"deleteStatus\": true
}
}
此处状态为Cassandra字段名,剩余为一条记录的值
现在我需要用deleteStatus=true
搜索记录,请提供任何线索
提前感谢您应该将您的状态对象存储为一个由UDT(Cassandra用户定义类型)支持的Elasticsearch对象,然后,您将能够使用Elasticsearch嵌套查询进行搜索 您可以使用状态列的UDT创建cassandra模式,并自动发现映射,或者指定elasticsearch映射以生成CQL模式。可选的cql_udt_名称允许命名udt名称,如下所示:
XContentBuilder mapping = XContentFactory.jsonBuilder()
.startObject()
.startObject("properties")
.startObject("id").field("type", "keyword").field("cql_collection", "singleton").field("cql_primary_key_order", 0).field("cql_partition_key", true).endObject()
.startObject("event_timestamp")
.field("type", "date")
.field("format", "strict_date_hour_minute_second||epoch_millis")
.field("cql_collection", "singleton")
.endObject()
.startObject("event_info")
.field("type", "nested")
.field("cql_collection", "singleton")
.field("cql_udt_name", "event_info_udt")
.field("dynamic", "false")
.startObject("properties")
.startObject("event_timestamp")
.field("type", "date")
.field("format", "strict_date_hour_minute_second||epoch_millis")
.field("cql_collection", "singleton")
.endObject()
.endObject()
.endObject()
.endObject()
.endObject();
我不确定我的解决方案是否适合您
如果elassandra不支持Ingest processor,则应使用建议的映射为UDT编制索引。
谢谢。您有一个已经以JSON格式存在的查询,您想在代码中使用该JSON来查询ES吗?您能更具体一点吗?也许能提供一点代码?我更新了我的问题,请看我的使用案例。谢谢。它对我有用,谢谢:)接受答案