当我将Flashlight与Firebase结合使用并通过直接查询进行Elastic搜索时,它确实起作用:
询问
{"index":"firebase","query":"rose","type":"tasting"}
码
...
Map<String,String> q = new HashMap<>();
q.put("index", "firebase");
q.put("type", "tasting");
q.put("query", "rose");
String key = ref.child("request").push().getKey();
ref.child("request").child(key).setValue(q);
...
但是,当我希望不仅限于10条提示时,此操作将失败(无结果)
询问
{"index":"firebase","options":{"from":0,"to":50},"query":{"query_string":{"query":"rose"}},"type":"tasting"}
码
...
HashMap<String, String> q = new HashMap<>();
q.put("query", "rose");
qs = new HashMap<>();
qs.put("query_string", q);
Map<String, Object> options = new HashMap<>();
options.put("from", 0);
options.put("to", 50);
HashMap<String, Object> qo = new HashMap<>();
qo.put("index", "firebase");
qo.put("type", "tasting");
qo.put("options", options);
qo.put("query", a);
String key = ref.child("request").push().getKey();
ref.child("request").child(key).setValue(q);
...
我使用Flashlight示例中提供的选项,并为option添加零件:
"search": {
"request": {
"$recid": {
// I can only read records assigned to me
".read": "auth.id === data.child('id').val() || auth.uid === data.child('id').val()",
// I can only write new records that don't exist yet
".write": "!data.exists() && (newData.child('id').val() === auth.id || newData.child('id').val() === auth.uid)",
".validate": "newData.hasChildren(['query', 'index', 'type'])",
"index": {
// accepts arrays or strings
".validate": "(newData.isString() && newData.val().length < 1000) || newData.hasChildren()",
"$child": {
".validate": "newData.isString() && newData.val().length < 1000"
}
},
"type": {
// accepts arrays or strings
".validate": "(newData.isString() && newData.val().length < 1000) || newData.hasChildren()",
"$child": {
".validate": "newData.isString() && newData.val().length < 1000"
}
},
"query": {
// structure of the query object is pretty open-ended
".validate": "newData.isString() || newData.hasChildren()"
},
"$other": {
".validate": false
}
}
},
"response": {
"$recid": {
// I can only read/write records assigned to me
".read": "auth.id === data.child('id').val() || auth.uid === data.child('id').val()",
".write": "auth.id === data.child('id').val() || auth.uid === data.child('id').val()",
// Assumes that Flashlight will be writing the records using a secret or a token that has admin: true
// The only thing a logged in user needs to do is delete results after reading them
".validate": false
}
}
}
为什么可以在https://github.com/firebase/flashlight/issues/29#issuecomment-129340229中找到options参数
我期望手电筒能够处理所有类型的elasticsearch查询。2个解决方案:1 /不会2 /我没有找到方法!
在我这边,我必须像这样更新Flashlight SearchQueue.js文件:
_process: function (snap) {
var dat = snap.val();
var key = snap.key();
// get your query string
var q = dat.query.query_string.query;
// build your ES query
var q1 = {"query":{"match":{"_all":q}}};
if (this._assertValidSearch(key, dat)) {
// Perform (a very simple) ElasticSearch query
this.esc.search({
index: dat.index,
type: dat.type,
// add options
from : dat.options.from,
size : dat.options.size,
// add ES Query
body : q1
}, function (error, response) {
if (error) {
this._reply(key, {error: error, total: 0});
} else {
this._reply(key, response);
}
}.bind(this));
}
},
我有两个独立的索引- 1。产品 2。currency_rates 产品索引中的文档具有以下详细信息- currency_rates索引中的文档具有以下详细信息- 我希望在products index的price字段中实现排序, 但是由于product index中的每个文档可能有不同的货币, 我需要首先将所有货币转换为美元, 并在转换后的ResultSet上进行carryout排序。 以下是我的创
8.登录Heroku 9A-问题:当我第一次在Heroku建立帐户时,我应该用我的应用程序的名字创建一个新的应用程序,并使用它列出的git指令部署它吗?如果我一开始不应该这样做,运行“heroku create”会为我管理这个过程吗? 问题:我是只运行“Heroku create”还是运行“Heroku Create-app's name-here”? 13.提交消息 14.推给主人 15.--问
我可以使用Lucene查询ElasticSearch索引吗? 我使用ElasticSearch创建了一个索引,并插入了以下三个文档: null 不幸的是,d.get(“_source”)也返回null。 如何检索匹配查询的文档字段? 谢谢你。
该字段中的映射是: 所以,我想我误解了通配符在ES中是如何工作的。有人知道为什么不匹配文本字段中的“任何字符”吗? 谢了。 > 创建索引
问题内容: 该站点仅包含JSON文档,而没有Java客户端。我应该执行某种映射吗? 例如地理位置查询:http : //www.elasticsearch.org/guide/reference/query- dsl/geo-distance-range- filter.html 如何使用Java客户端编写这样的查询? 谢谢杰森 问题答案: 不明显但不那么复杂;)
问题内容: 我有一个用于Elasticsearch的简单JSON查询,如下所示: 仅当值(在这种情况下为“ a1”)不为空时,才如何执行第二个“必须”条件? 问题答案: 您可以使用以下方法实现它-