我正在使用ES 2.3,现在将其升级到ES 7.4。数据是通过自动测试生成的,因此始终为32个文档。
我在使用ES 2.3进行全部查询时发现,我得到了所有32个文档。
可以在结果中找到文档,例如data.id: 5dba917f61b48a327c948557
。
我可以通过data.id
进行查询,也可以找到文档。
但是,如果我使用ES 7做同样的事情,我CAN NOT
会用data.id:5dba917f61b48a327c948557
查找文档
在查询所有例如。 http://localhost:9200/test-auditing-2019-10/_search?pretty=true个结果。
{
"took" : 16,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 32,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "test-auditing-2019-10",
"_type" : "_doc",
"_id" : "J0LIIG4Bw-26hPm9OiXO",
...
查询http://localhost:9200/test-auditing-2019-10/_search?q=data.id:5dba917f61b48a327c948557&pretty=true时我确实得到了文档。
...
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 2.3795462,
"hits" : [
{
"_index" : "test-auditing-2019-10",
"_type" : "_doc",
"_id" : "RELIIG4Bw-26hPm9WyUP",
...
怎么了?这是预期的吗?非常感谢。
答案 0 :(得分:1)
ElasticSearch 2.3太旧,也许它将返回所有匹配的文档。我没有此版本,因此无法复制。
但是,即使您的查询匹配所有文档,现代的ElasticSearch默认也只返回10个匹配的文档。为了获得更多匹配的文档,您可以使用 public class MapEntry<K,V> {
MapEntry<K,V> next;
K key;
V value;
public MapEntry(K key, V value) {
this.setKey(key);
this.setValue(value);
}
public void setKey( K key){
this.key=key;
}
public void setValue(V value){
this.value=value;
}
public K getKey(){
return key;
}
public V getValue(){
return value;
}
public void setNext(MapEntry<K,V> next) {
this.next = next;
}
public MapEntry<K, V> getNext() {
return next;
}
}
public class HashMap{
private int DEFAULT_CAPACITY = 10;
private MapEntry<String,Double>[] Hash;
private int size;
public HashMap() {
Hash = new MapEntry[DEFAULT_CAPACITY];
}
public boolean isEmpty(){
if(size!= 0){
return false;
}
else{
return true;
}
}
public int getHashCode(String key){
int bucketIndex = key.hashCode()%Hash.length;
return bucketIndex;
}
public Double get(String key){
if(key == null){
try {
throw new IllegalAccessException("Null key");
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
MapEntry<String,Double> entry = Hash[getHashCode(key)];
while (entry != null && !key.equals(entry.getKey()))
entry = entry.getNext();
if(entry != null)
return entry.getValue();
else
return null;
}
}
public void put(String key, double value){
int keyBucket =hash(key);
MapEntry<String,Double> temp = Hash[keyBucket];
while (temp !=null){
if((temp.key == null && key == null)
|| (temp.key != null && temp.key.equals(key))){
temp.value = value;
return;
}
temp = temp.next;
}
Hash[keyBucket] = new MapEntry<String, Double>(key,value);
size++;
}
public void delete (String key) throws IllegalAccessException {
if(key == null){
throw new IllegalAccessException("Null key");
}
}
private int hash(String key){
if(key == null){
return 0;
}else {
return Math.abs(key.hashCode()% this.Hash.length);
}
}
public static void main(String[] args) {
HashMap hashMap = new HashMap();
hashMap.put("value", 2.2);
hashMap.put("bob", 2.3);
System.out.println(hashMap.get("value"));
System.out.println(hashMap.get("bob"));
System.out.println(hashMap.size);
System.out.println(hashMap.getHashCode("value"));
System.out.println(hashMap.getHashCode("bob"));
System.out.println(hashMap.isEmpty());
}
}
和from
进行分页:
获取前32个文档:
size
获取下32个文档:
http://localhost:9200/test-auditing-2019-10/_search?from=0&size=32&pretty=true