109.8. 例子
109.8.1. 索引示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下是一个简单的 INDEX 示例
from("direct:index")
.to("opensearch://opensearch?operation=Index&indexName=twitter");
from("direct:index")
.to("opensearch://opensearch?operation=Index&indexName=twitter");
<route>
<from uri="direct:index"/>
<to uri="opensearch://opensearch?operation=Index&indexName=twitter"/>
</route>
<route>
<from uri="direct:index"/>
<to uri="opensearch://opensearch?operation=Index&indexName=twitter"/>
</route>
注意
对于此操作,您需要指定一个 indexId 标头。
客户端只需要将包含 映射 的正文消息传递给路由。结果正文包含创建的 indexId。
Map<String, String> map = new HashMap<String, String>();
map.put("content", "test");
String indexId = template.requestBody("direct:index", map, String.class);
Map<String, String> map = new HashMap<String, String>();
map.put("content", "test");
String indexId = template.requestBody("direct:index", map, String.class);
109.8.2. 搜索示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
搜索特定字段和值使用 Operation 'Search'。传递查询 JSON 字符串或映射
from("direct:search")
.to("opensearch://opensearch?operation=Search&indexName=twitter");
from("direct:search")
.to("opensearch://opensearch?operation=Search&indexName=twitter");
<route>
<from uri="direct:search"/>
<to uri="opensearch://opensearch?operation=Search&indexName=twitter"/>
</route>
<route>
<from uri="direct:search"/>
<to uri="opensearch://opensearch?operation=Search&indexName=twitter"/>
</route>
String query = "{\"query\":{\"match\":{\"doc.content\":\"new release of ApacheCamel\"}}}";
HitsMetadata<?> response = template.requestBody("direct:search", query, HitsMetadata.class);
String query = "{\"query\":{\"match\":{\"doc.content\":\"new release of ApacheCamel\"}}}";
HitsMetadata<?> response = template.requestBody("direct:search", query, HitsMetadata.class);
使用 Map 搜索特定字段。
使用 OpenSearch scroll api 搜索以获取所有结果。
from("direct:search")
.to("opensearch://opensearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000");
from("direct:search")
.to("opensearch://opensearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000");
<route>
<from uri="direct:search"/>
<to uri="opensearch://opensearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000"/>
</route>
<route>
<from uri="direct:search"/>
<to uri="opensearch://opensearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000"/>
</route>
String query = "{\"query\":{\"match\":{\"doc.content\":\"new release of ApacheCamel\"}}}";
try (OpenSearchScrollRequestIterator response = template.requestBody("direct:search", query, OpenSearchScrollRequestIterator.class)) {
// do something smart with results
}
String query = "{\"query\":{\"match\":{\"doc.content\":\"new release of ApacheCamel\"}}}";
try (OpenSearchScrollRequestIterator response = template.requestBody("direct:search", query, OpenSearchScrollRequestIterator.class)) {
// do something smart with results
}
也可以使用分割 EIP。
109.8.3. MultiSearch 示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
MultiSearching on specific field (s)和 value 使用 Operation MultiSearch。传递 MultiSearchRequest 实例
from("direct:multiSearch")
.to("opensearch://opensearch?operation=MultiSearch");
from("direct:multiSearch")
.to("opensearch://opensearch?operation=MultiSearch");
<route>
<from uri="direct:multiSearch"/>
<to uri="opensearch://opensearch?operation=MultiSearch"/>
</route>
<route>
<from uri="direct:multiSearch"/>
<to uri="opensearch://opensearch?operation=MultiSearch"/>
</route>
MultiSearch on specific field (s)